Lines 50-70
Link Here
|
50 |
import java.net.URL; |
50 |
import java.net.URL; |
51 |
import java.util.ArrayList; |
51 |
import java.util.ArrayList; |
52 |
import java.util.Arrays; |
52 |
import java.util.Arrays; |
|
|
53 |
import java.util.Collection; |
54 |
import java.util.HashSet; |
53 |
import java.util.List; |
55 |
import java.util.List; |
|
|
56 |
import java.util.Set; |
57 |
import java.util.SortedSet; |
58 |
import java.util.TreeSet; |
54 |
import java.util.Vector; |
59 |
import java.util.Vector; |
55 |
import java.util.logging.Level; |
60 |
import java.util.logging.Level; |
56 |
import java.util.logging.Logger; |
61 |
import java.util.logging.Logger; |
57 |
import java.util.regex.Pattern; |
62 |
import java.util.regex.Pattern; |
58 |
import javax.swing.DefaultComboBoxModel; |
63 |
import javax.swing.DefaultComboBoxModel; |
59 |
import javax.swing.JFileChooser; |
64 |
import javax.swing.JFileChooser; |
|
|
65 |
import javax.swing.SwingUtilities; |
60 |
import javax.swing.event.DocumentListener; |
66 |
import javax.swing.event.DocumentListener; |
61 |
import org.netbeans.api.j2ee.core.Profile; |
67 |
import org.netbeans.api.j2ee.core.Profile; |
62 |
import org.netbeans.api.project.libraries.Library; |
68 |
import org.netbeans.api.project.libraries.Library; |
63 |
import org.netbeans.api.project.libraries.LibraryManager; |
69 |
import org.netbeans.api.project.libraries.LibraryManager; |
64 |
import org.netbeans.modules.j2ee.common.Util; |
70 |
import org.netbeans.modules.j2ee.common.Util; |
|
|
71 |
import org.netbeans.modules.j2ee.deployment.common.api.Version; |
65 |
import org.netbeans.modules.j2ee.deployment.devmodules.api.Deployment; |
72 |
import org.netbeans.modules.j2ee.deployment.devmodules.api.Deployment; |
66 |
import org.netbeans.modules.j2ee.deployment.devmodules.api.InstanceRemovedException; |
73 |
import org.netbeans.modules.j2ee.deployment.devmodules.api.InstanceRemovedException; |
67 |
import org.netbeans.modules.j2ee.deployment.devmodules.api.J2eePlatform; |
74 |
import org.netbeans.modules.j2ee.deployment.devmodules.api.J2eePlatform; |
|
|
75 |
import org.netbeans.modules.j2ee.deployment.devmodules.api.ServerInstance; |
76 |
import org.netbeans.modules.j2ee.deployment.plugins.api.ServerLibrary; |
68 |
import org.netbeans.modules.web.api.webmodule.ExtenderController; |
77 |
import org.netbeans.modules.web.api.webmodule.ExtenderController; |
69 |
import org.netbeans.modules.web.api.webmodule.ExtenderController.Properties; |
78 |
import org.netbeans.modules.web.api.webmodule.ExtenderController.Properties; |
70 |
import org.netbeans.modules.web.jsf.JSFUtils; |
79 |
import org.netbeans.modules.web.jsf.JSFUtils; |
Lines 89-94
Link Here
|
89 |
private boolean customizer; |
98 |
private boolean customizer; |
90 |
|
99 |
|
91 |
private final List<LibraryItem> jsfLibraries = new ArrayList<LibraryItem>(); |
100 |
private final List<LibraryItem> jsfLibraries = new ArrayList<LibraryItem>(); |
|
|
101 |
private final Set<ServerLibraryItem> serverJsfLibraries = new TreeSet<ServerLibraryItem>(); |
92 |
private boolean libsInitialized; |
102 |
private boolean libsInitialized; |
93 |
private String serverInstanceID; |
103 |
private String serverInstanceID; |
94 |
private final List<String> preferredLanguages = new ArrayList<String>(); |
104 |
private final List<String> preferredLanguages = new ArrayList<String>(); |
Lines 124-131
Link Here
|
124 |
return; |
134 |
return; |
125 |
} |
135 |
} |
126 |
|
136 |
|
127 |
final Vector <String> items = new Vector <String>(); |
137 |
// init server libraries first |
|
|
138 |
initServerLibraries(); |
139 |
|
140 |
final Vector<String> registeredItems = new Vector<String>(); |
128 |
jsfLibraries.clear(); |
141 |
jsfLibraries.clear(); |
|
|
142 |
|
129 |
final Runnable libraryFinder = new Runnable() { |
143 |
final Runnable libraryFinder = new Runnable() { |
130 |
|
144 |
|
131 |
@Override |
145 |
@Override |
Lines 140-146
Link Here
|
140 |
if (library.getName().startsWith("facelets-") && !library.getName().endsWith("el-api") //NOI18N |
154 |
if (library.getName().startsWith("facelets-") && !library.getName().endsWith("el-api") //NOI18N |
141 |
&& !library.getName().endsWith("jsf-ri") && !library.getName().endsWith("myfaces")){ //NOI18N |
155 |
&& !library.getName().endsWith("jsf-ri") && !library.getName().endsWith("myfaces")){ //NOI18N |
142 |
String displayName = library.getDisplayName(); |
156 |
String displayName = library.getDisplayName(); |
143 |
items.add(displayName); |
157 |
registeredItems.add(displayName); |
144 |
//TODO XX Add correct version |
158 |
//TODO XX Add correct version |
145 |
jsfLibraries.add(new LibraryItem(library, JSFVersion.JSF_1_2)); |
159 |
jsfLibraries.add(new LibraryItem(library, JSFVersion.JSF_1_2)); |
146 |
} |
160 |
} |
Lines 148-154
Link Here
|
148 |
content = library.getContent("classpath"); //NOI18N |
162 |
content = library.getContent("classpath"); //NOI18N |
149 |
try { |
163 |
try { |
150 |
if (Util.containsClass(content, JSFUtils.FACES_EXCEPTION) && !excludeLibs.contains(library.getName())) { |
164 |
if (Util.containsClass(content, JSFUtils.FACES_EXCEPTION) && !excludeLibs.contains(library.getName())) { |
151 |
items.add(library.getDisplayName()); |
165 |
registeredItems.add(library.getDisplayName()); |
152 |
boolean isJSF12 = Util.containsClass(content, JSFUtils.JSF_1_2__API_SPECIFIC_CLASS); |
166 |
boolean isJSF12 = Util.containsClass(content, JSFUtils.JSF_1_2__API_SPECIFIC_CLASS); |
153 |
boolean isJSF20 = Util.containsClass(content, JSFUtils.JSF_2_0__API_SPECIFIC_CLASS); |
167 |
boolean isJSF20 = Util.containsClass(content, JSFUtils.JSF_2_0__API_SPECIFIC_CLASS); |
154 |
if (isJSF12 && !isJSF20) { |
168 |
if (isJSF12 && !isJSF20) { |
Lines 163-170
Link Here
|
163 |
Exceptions.printStackTrace(exception); |
177 |
Exceptions.printStackTrace(exception); |
164 |
} |
178 |
} |
165 |
} |
179 |
} |
166 |
setLibraryModel(items); |
180 |
|
167 |
updatePreferredLanguages(); |
181 |
SwingUtilities.invokeLater(new Runnable() { |
|
|
182 |
@Override |
183 |
public void run() { |
184 |
setRegisteredLibraryModel(registeredItems); |
185 |
updatePreferredLanguages(); |
186 |
} |
187 |
}); |
168 |
LOG.finest("Time spent in initLibraries in Runnable = "+(System.currentTimeMillis()-time) +" ms"); //NOI18N |
188 |
LOG.finest("Time spent in initLibraries in Runnable = "+(System.currentTimeMillis()-time) +" ms"); //NOI18N |
169 |
} |
189 |
} |
170 |
} |
190 |
} |
Lines 176-189
Link Here
|
176 |
LOG.finest("Time spent in "+this.getClass().getName() +" initLibraries = "+(System.currentTimeMillis()-time) +" ms"); //NOI18N |
196 |
LOG.finest("Time spent in "+this.getClass().getName() +" initLibraries = "+(System.currentTimeMillis()-time) +" ms"); //NOI18N |
177 |
} |
197 |
} |
178 |
|
198 |
|
179 |
private void setLibraryModel(Vector<String> items) { |
199 |
private void initServerLibraries() { |
|
|
200 |
serverJsfLibraries.clear(); |
201 |
|
202 |
// final Runnable libraryFinder = new Runnable() { |
203 |
// |
204 |
// @Override |
205 |
// public void run() { |
206 |
synchronized (this) { |
207 |
boolean serverLib = false; |
208 |
if (serverInstanceID != null && !"".equals(serverInstanceID)) { |
209 |
try { |
210 |
ServerInstance.LibraryManager libManager = Deployment.getDefault().getServerInstance(serverInstanceID).getLibraryManager(); |
211 |
if (libManager != null) { |
212 |
serverLib = true; |
213 |
Set<ServerLibrary> libs = new HashSet<ServerLibrary>(); |
214 |
libs.addAll(libManager.getDeployedLibraries()); |
215 |
libs.addAll(libManager.getDeployableLibraries()); |
216 |
|
217 |
for (ServerLibrary lib : libs) { |
218 |
// FIXME optimize |
219 |
if ("JavaServer Faces".equals(lib.getSpecificationTitle())) { // NOI18N |
220 |
if (Version.fromJsr277NotationWithFallback("2.0").equals(lib.getSpecificationVersion())) { // NOI18N |
221 |
serverJsfLibraries.add(new ServerLibraryItem(lib, JSFVersion.JSF_2_0)); |
222 |
} else if (Version.fromJsr277NotationWithFallback("1.2").equals(lib.getSpecificationVersion())) { // NOI18N |
223 |
serverJsfLibraries.add(new ServerLibraryItem(lib, JSFVersion.JSF_1_2)); |
224 |
} else if (Version.fromJsr277NotationWithFallback("1.1").equals(lib.getSpecificationVersion())) { // NOI18N |
225 |
serverJsfLibraries.add(new ServerLibraryItem(lib, JSFVersion.JSF_1_1)); |
226 |
} else { |
227 |
LOG.log(Level.INFO, "Unknown JSF version {0}", lib.getSpecificationVersion()); |
228 |
} |
229 |
} |
230 |
} |
231 |
} |
232 |
} catch (InstanceRemovedException ex) { |
233 |
LOG.log(Level.INFO, null, ex); |
234 |
// use the old way |
235 |
} |
236 |
} |
237 |
|
238 |
if (!serverLib) { |
239 |
File[] cp; |
240 |
J2eePlatform platform = null; |
241 |
try { |
242 |
if (serverInstanceID != null) { |
243 |
platform = Deployment.getDefault().getServerInstance(serverInstanceID).getJ2eePlatform(); |
244 |
} |
245 |
} catch (InstanceRemovedException ex) { |
246 |
platform = null; |
247 |
LOG.log(Level.INFO, org.openide.util.NbBundle.getMessage(JSFConfigurationPanelVisual.class, "SERVER_INSTANCE_REMOVED"), ex); |
248 |
} |
249 |
// j2eeplatform can be null, when the target server is not accessible. |
250 |
if (platform != null) { |
251 |
cp = platform.getClasspathEntries(); |
252 |
} else { |
253 |
cp = new File[0]; |
254 |
} |
255 |
|
256 |
try { |
257 |
// XXX: there should be a utility class for this: |
258 |
boolean isJSF = Util.containsClass(Arrays.asList(cp), JSFUtils.FACES_EXCEPTION); |
259 |
boolean isJSF12 = Util.containsClass(Arrays.asList(cp), JSFUtils.JSF_1_2__API_SPECIFIC_CLASS); |
260 |
boolean isJSF20 = Util.containsClass(Arrays.asList(cp), JSFUtils.JSF_2_0__API_SPECIFIC_CLASS); |
261 |
|
262 |
JSFVersion jsfVersion = null; |
263 |
if (isJSF20) { |
264 |
jsfVersion = JSFVersion.JSF_2_0; |
265 |
} else if (isJSF12) { |
266 |
jsfVersion = JSFVersion.JSF_1_2; |
267 |
} else if (isJSF) { |
268 |
jsfVersion = JSFVersion.JSF_1_1; |
269 |
} |
270 |
if (jsfVersion != null) { |
271 |
serverJsfLibraries.add(new ServerLibraryItem(null, jsfVersion)); |
272 |
} |
273 |
} catch (IOException ex) { |
274 |
Exceptions.printStackTrace(ex); |
275 |
} |
276 |
} |
277 |
|
278 |
// SwingUtilities.invokeLater(new Runnable() { |
279 |
// @Override |
280 |
// public void run() { |
281 |
setServerLibraryModel(serverJsfLibraries); |
282 |
updatePreferredLanguages(); |
283 |
// } |
284 |
// }); |
285 |
} |
286 |
// } |
287 |
// }; |
288 |
// RequestProcessor.getDefault().post(libraryFinder); |
289 |
} |
290 |
|
291 |
private void setRegisteredLibraryModel(Vector<String> items) { |
180 |
long time = System.currentTimeMillis(); |
292 |
long time = System.currentTimeMillis(); |
181 |
cbLibraries.setModel(new DefaultComboBoxModel(items)); |
293 |
cbLibraries.setModel(new DefaultComboBoxModel(items)); |
182 |
if (items.size() == 0) { |
294 |
if (items.size() == 0) { |
183 |
rbRegisteredLibrary.setEnabled(false); |
295 |
rbRegisteredLibrary.setEnabled(false); |
184 |
cbLibraries.setEnabled(false); |
296 |
cbLibraries.setEnabled(false); |
185 |
rbNewLibrary.setSelected(true); |
297 |
rbNewLibrary.setSelected(true); |
186 |
panel.setLibrary(null); |
298 |
panel.setLibrary((Library) null); |
187 |
} else if (items.size() != 0 && panel.getLibraryType() == JSFConfigurationPanel.LibraryType.USED){ |
299 |
} else if (items.size() != 0 && panel.getLibraryType() == JSFConfigurationPanel.LibraryType.USED){ |
188 |
if (!customizer) { |
300 |
if (!customizer) { |
189 |
rbRegisteredLibrary.setEnabled(true); |
301 |
rbRegisteredLibrary.setEnabled(true); |
Lines 199-205
Link Here
|
199 |
repaint(); |
311 |
repaint(); |
200 |
LOG.finest("Time spent in "+this.getClass().getName() +" setLibraryModel = "+(System.currentTimeMillis()-time) +" ms"); //NOI18N |
312 |
LOG.finest("Time spent in "+this.getClass().getName() +" setLibraryModel = "+(System.currentTimeMillis()-time) +" ms"); //NOI18N |
201 |
} |
313 |
} |
202 |
|
314 |
|
|
|
315 |
private void setServerLibraryModel(Collection<ServerLibraryItem> items) { |
316 |
serverLibraries.setModel(new DefaultComboBoxModel(items.toArray())); |
317 |
if (items.isEmpty()) { |
318 |
rbServerLibrary.setEnabled(false); |
319 |
serverLibraries.setEnabled(false); |
320 |
rbRegisteredLibrary.setSelected(true); |
321 |
panel.setServerLibrary((ServerLibrary) null); |
322 |
} else if (!items.isEmpty() && panel.getLibraryType() == JSFConfigurationPanel.LibraryType.SERVER){ |
323 |
if (!customizer) { |
324 |
rbServerLibrary.setEnabled(true); |
325 |
serverLibraries.setEnabled(true); |
326 |
} |
327 |
rbServerLibrary.setSelected(true); |
328 |
if (!serverJsfLibraries.isEmpty()) { |
329 |
ServerLibraryItem item = (ServerLibraryItem) serverLibraries.getSelectedItem(); |
330 |
if (item != null) { |
331 |
panel.setServerLibrary(item.getLibrary()); |
332 |
} |
333 |
} |
334 |
} |
335 |
|
336 |
repaint(); |
337 |
} |
338 |
|
203 |
/** |
339 |
/** |
204 |
* Init Preferred Languages check box with "JSP" and/or "Facelets" |
340 |
* Init Preferred Languages check box with "JSP" and/or "Facelets" |
205 |
* according to choosen library |
341 |
* according to choosen library |
Lines 217-225
Link Here
|
217 |
if (panel.getNewLibraryName()!=null) { |
353 |
if (panel.getNewLibraryName()!=null) { |
218 |
jsfLibrary = LibraryManager.getDefault().getLibrary(panel.getNewLibraryName()); |
354 |
jsfLibrary = LibraryManager.getDefault().getLibrary(panel.getNewLibraryName()); |
219 |
} |
355 |
} |
220 |
} else if (panel.getLibraryType() == JSFConfigurationPanel.LibraryType.NONE) { |
356 |
} else if (panel.getLibraryType() == JSFConfigurationPanel.LibraryType.SERVER) { |
221 |
//XXX: need to find lib version |
357 |
//XXX: need to find lib version |
222 |
if (rbNoneLibrary.getText().indexOf("2.0")!=-1) { |
358 |
ServerLibraryItem item = (ServerLibraryItem) serverLibraries.getSelectedItem(); |
|
|
359 |
if (item != null && item.getVersion() == JSFVersion.JSF_2_0) { |
223 |
faceletsPresent = true; |
360 |
faceletsPresent = true; |
224 |
} |
361 |
} |
225 |
} |
362 |
} |
Lines 262-268
Link Here
|
262 |
buttonGroup1 = new javax.swing.ButtonGroup(); |
399 |
buttonGroup1 = new javax.swing.ButtonGroup(); |
263 |
jsfTabbedPane = new javax.swing.JTabbedPane(); |
400 |
jsfTabbedPane = new javax.swing.JTabbedPane(); |
264 |
libPanel = new javax.swing.JPanel(); |
401 |
libPanel = new javax.swing.JPanel(); |
265 |
rbNoneLibrary = new javax.swing.JRadioButton(); |
402 |
rbServerLibrary = new javax.swing.JRadioButton(); |
266 |
rbRegisteredLibrary = new javax.swing.JRadioButton(); |
403 |
rbRegisteredLibrary = new javax.swing.JRadioButton(); |
267 |
cbLibraries = new javax.swing.JComboBox(); |
404 |
cbLibraries = new javax.swing.JComboBox(); |
268 |
rbNewLibrary = new javax.swing.JRadioButton(); |
405 |
rbNewLibrary = new javax.swing.JRadioButton(); |
Lines 271-276
Link Here
|
271 |
jbBrowse = new javax.swing.JButton(); |
408 |
jbBrowse = new javax.swing.JButton(); |
272 |
lVersion = new javax.swing.JLabel(); |
409 |
lVersion = new javax.swing.JLabel(); |
273 |
jtNewLibraryName = new javax.swing.JTextField(); |
410 |
jtNewLibraryName = new javax.swing.JTextField(); |
|
|
411 |
serverLibraries = new javax.swing.JComboBox(); |
274 |
confPanel = new javax.swing.JPanel(); |
412 |
confPanel = new javax.swing.JPanel(); |
275 |
lURLPattern = new javax.swing.JLabel(); |
413 |
lURLPattern = new javax.swing.JLabel(); |
276 |
tURLPattern = new javax.swing.JTextField(); |
414 |
tURLPattern = new javax.swing.JTextField(); |
Lines 286-298
Link Here
|
286 |
libPanel.setAlignmentX(0.2F); |
424 |
libPanel.setAlignmentX(0.2F); |
287 |
libPanel.setAlignmentY(0.2F); |
425 |
libPanel.setAlignmentY(0.2F); |
288 |
|
426 |
|
289 |
buttonGroup1.add(rbNoneLibrary); |
427 |
buttonGroup1.add(rbServerLibrary); |
290 |
rbNoneLibrary.setMnemonic(java.util.ResourceBundle.getBundle("org/netbeans/modules/web/jsf/wizards/Bundle").getString("MNE_rbNoAppend").charAt(0)); |
428 |
rbServerLibrary.setMnemonic(java.util.ResourceBundle.getBundle("org/netbeans/modules/web/jsf/wizards/Bundle").getString("MNE_rbNoAppend").charAt(0)); |
291 |
java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("org/netbeans/modules/web/jsf/wizards/Bundle"); // NOI18N |
429 |
java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("org/netbeans/modules/web/jsf/wizards/Bundle"); // NOI18N |
292 |
rbNoneLibrary.setText(bundle.getString("LBL_Any_Library")); // NOI18N |
430 |
rbServerLibrary.setText(bundle.getString("LBL_Any_Library")); // NOI18N |
293 |
rbNoneLibrary.addItemListener(new java.awt.event.ItemListener() { |
431 |
rbServerLibrary.addItemListener(new java.awt.event.ItemListener() { |
294 |
public void itemStateChanged(java.awt.event.ItemEvent evt) { |
432 |
public void itemStateChanged(java.awt.event.ItemEvent evt) { |
295 |
rbNoneLibraryItemStateChanged(evt); |
433 |
rbServerLibraryItemStateChanged(evt); |
296 |
} |
434 |
} |
297 |
}); |
435 |
}); |
298 |
|
436 |
|
Lines 355-360
Link Here
|
355 |
} |
493 |
} |
356 |
}); |
494 |
}); |
357 |
|
495 |
|
|
|
496 |
serverLibraries.addActionListener(new java.awt.event.ActionListener() { |
497 |
public void actionPerformed(java.awt.event.ActionEvent evt) { |
498 |
serverLibrariesActionPerformed(evt); |
499 |
} |
500 |
}); |
501 |
|
358 |
org.jdesktop.layout.GroupLayout libPanelLayout = new org.jdesktop.layout.GroupLayout(libPanel); |
502 |
org.jdesktop.layout.GroupLayout libPanelLayout = new org.jdesktop.layout.GroupLayout(libPanel); |
359 |
libPanel.setLayout(libPanelLayout); |
503 |
libPanel.setLayout(libPanelLayout); |
360 |
libPanelLayout.setHorizontalGroup( |
504 |
libPanelLayout.setHorizontalGroup( |
Lines 362-392
Link Here
|
362 |
.add(libPanelLayout.createSequentialGroup() |
506 |
.add(libPanelLayout.createSequentialGroup() |
363 |
.addContainerGap() |
507 |
.addContainerGap() |
364 |
.add(libPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) |
508 |
.add(libPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) |
365 |
.add(rbNoneLibrary, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 459, Short.MAX_VALUE) |
509 |
.add(org.jdesktop.layout.GroupLayout.TRAILING, rbNewLibrary, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 466, Short.MAX_VALUE) |
366 |
.add(libPanelLayout.createSequentialGroup() |
|
|
367 |
.add(rbRegisteredLibrary) |
368 |
.addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED) |
369 |
.add(libPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) |
370 |
.add(cbLibraries, 0, 293, Short.MAX_VALUE) |
371 |
.add(org.jdesktop.layout.GroupLayout.TRAILING, libPanelLayout.createSequentialGroup() |
372 |
.add(libPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING) |
373 |
.add(jtNewLibraryName, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 217, Short.MAX_VALUE) |
374 |
.add(jtFolder, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 217, Short.MAX_VALUE)) |
375 |
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) |
376 |
.add(jbBrowse)))) |
377 |
.add(org.jdesktop.layout.GroupLayout.TRAILING, rbNewLibrary, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 459, Short.MAX_VALUE) |
378 |
.add(libPanelLayout.createSequentialGroup() |
510 |
.add(libPanelLayout.createSequentialGroup() |
379 |
.add(22, 22, 22) |
511 |
.add(22, 22, 22) |
380 |
.add(libPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) |
512 |
.add(libPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) |
381 |
.add(org.jdesktop.layout.GroupLayout.TRAILING, lVersion, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 437, Short.MAX_VALUE) |
513 |
.add(org.jdesktop.layout.GroupLayout.TRAILING, lVersion, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 444, Short.MAX_VALUE) |
382 |
.add(lDirectory, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 437, Short.MAX_VALUE)))) |
514 |
.add(lDirectory, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 444, Short.MAX_VALUE))) |
|
|
515 |
.add(libPanelLayout.createSequentialGroup() |
516 |
.add(libPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING, false) |
517 |
.add(org.jdesktop.layout.GroupLayout.LEADING, rbServerLibrary, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) |
518 |
.add(org.jdesktop.layout.GroupLayout.LEADING, rbRegisteredLibrary, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) |
519 |
.addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED) |
520 |
.add(libPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) |
521 |
.add(cbLibraries, 0, 283, Short.MAX_VALUE) |
522 |
.add(org.jdesktop.layout.GroupLayout.TRAILING, libPanelLayout.createSequentialGroup() |
523 |
.add(libPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING) |
524 |
.add(jtNewLibraryName, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 175, Short.MAX_VALUE) |
525 |
.add(jtFolder, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 175, Short.MAX_VALUE)) |
526 |
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) |
527 |
.add(jbBrowse)) |
528 |
.add(serverLibraries, 0, 283, Short.MAX_VALUE)))) |
383 |
.addContainerGap()) |
529 |
.addContainerGap()) |
384 |
); |
530 |
); |
385 |
libPanelLayout.setVerticalGroup( |
531 |
libPanelLayout.setVerticalGroup( |
386 |
libPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) |
532 |
libPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) |
387 |
.add(org.jdesktop.layout.GroupLayout.TRAILING, libPanelLayout.createSequentialGroup() |
533 |
.add(org.jdesktop.layout.GroupLayout.TRAILING, libPanelLayout.createSequentialGroup() |
388 |
.addContainerGap() |
534 |
.addContainerGap() |
389 |
.add(rbNoneLibrary) |
535 |
.add(libPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) |
|
|
536 |
.add(rbServerLibrary) |
537 |
.add(serverLibraries, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) |
390 |
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) |
538 |
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) |
391 |
.add(libPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) |
539 |
.add(libPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) |
392 |
.add(rbRegisteredLibrary) |
540 |
.add(rbRegisteredLibrary) |
Lines 400-406
Link Here
|
400 |
.add(libPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) |
548 |
.add(libPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) |
401 |
.add(jtNewLibraryName, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) |
549 |
.add(jtNewLibraryName, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) |
402 |
.add(lVersion)) |
550 |
.add(lVersion)) |
403 |
.addContainerGap(27, Short.MAX_VALUE)) |
551 |
.addContainerGap(59, Short.MAX_VALUE)) |
404 |
); |
552 |
); |
405 |
|
553 |
|
406 |
jsfTabbedPane.addTab(org.openide.util.NbBundle.getMessage(JSFConfigurationPanelVisual.class, "LBL_TAB_Libraries"), libPanel); // NOI18N |
554 |
jsfTabbedPane.addTab(org.openide.util.NbBundle.getMessage(JSFConfigurationPanelVisual.class, "LBL_TAB_Libraries"), libPanel); // NOI18N |
Lines 434-440
Link Here
|
434 |
.add(confPanelLayout.createSequentialGroup() |
582 |
.add(confPanelLayout.createSequentialGroup() |
435 |
.add(lURLPattern) |
583 |
.add(lURLPattern) |
436 |
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) |
584 |
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) |
437 |
.add(tURLPattern, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 295, Short.MAX_VALUE)) |
585 |
.add(tURLPattern, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 280, Short.MAX_VALUE)) |
438 |
.add(confPanelLayout.createSequentialGroup() |
586 |
.add(confPanelLayout.createSequentialGroup() |
439 |
.add(jLabel1) |
587 |
.add(jLabel1) |
440 |
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) |
588 |
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) |
Lines 467-478
Link Here
|
467 |
jsfTabbedPane.getAccessibleContext().setAccessibleName(""); |
615 |
jsfTabbedPane.getAccessibleContext().setAccessibleName(""); |
468 |
}// </editor-fold>//GEN-END:initComponents |
616 |
}// </editor-fold>//GEN-END:initComponents |
469 |
|
617 |
|
470 |
private void rbNoneLibraryItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_rbNoneLibraryItemStateChanged |
618 |
private void rbServerLibraryItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_rbServerLibraryItemStateChanged |
471 |
updateLibrary(); |
619 |
updateLibrary(); |
472 |
if (rbNoneLibrary.isSelected()) { |
620 |
if (rbServerLibrary.isSelected()) { |
473 |
panel.fireChangeEvent(); |
621 |
panel.fireChangeEvent(); |
474 |
} |
622 |
} |
475 |
}//GEN-LAST:event_rbNoneLibraryItemStateChanged |
623 |
}//GEN-LAST:event_rbServerLibraryItemStateChanged |
476 |
|
624 |
|
477 |
private void jtNewLibraryNameKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jtNewLibraryNameKeyReleased |
625 |
private void jtNewLibraryNameKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jtNewLibraryNameKeyReleased |
478 |
panel.setNewLibraryName(jtNewLibraryName.getText().trim()); |
626 |
panel.setNewLibraryName(jtNewLibraryName.getText().trim()); |
Lines 520-525
Link Here
|
520 |
} else |
668 |
} else |
521 |
panel.setEnableFacelets(false); |
669 |
panel.setEnableFacelets(false); |
522 |
}//GEN-LAST:event_cbPreferredLangActionPerformed |
670 |
}//GEN-LAST:event_cbPreferredLangActionPerformed |
|
|
671 |
|
672 |
private void serverLibrariesActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_serverLibrariesActionPerformed |
673 |
// TODO add your handling code here: |
674 |
ServerLibraryItem item = (ServerLibraryItem) serverLibraries.getSelectedItem(); |
675 |
if (item != null) { |
676 |
panel.setServerLibrary(item.getLibrary()); |
677 |
} |
678 |
updatePreferredLanguages(); |
679 |
}//GEN-LAST:event_serverLibrariesActionPerformed |
523 |
|
680 |
|
524 |
|
681 |
|
525 |
// Variables declaration - do not modify//GEN-BEGIN:variables |
682 |
// Variables declaration - do not modify//GEN-BEGIN:variables |
Lines 538-545
Link Here
|
538 |
private javax.swing.JLabel lVersion; |
695 |
private javax.swing.JLabel lVersion; |
539 |
private javax.swing.JPanel libPanel; |
696 |
private javax.swing.JPanel libPanel; |
540 |
private javax.swing.JRadioButton rbNewLibrary; |
697 |
private javax.swing.JRadioButton rbNewLibrary; |
541 |
private javax.swing.JRadioButton rbNoneLibrary; |
|
|
542 |
private javax.swing.JRadioButton rbRegisteredLibrary; |
698 |
private javax.swing.JRadioButton rbRegisteredLibrary; |
|
|
699 |
private javax.swing.JRadioButton rbServerLibrary; |
700 |
private javax.swing.JComboBox serverLibraries; |
543 |
private javax.swing.JTextField tURLPattern; |
701 |
private javax.swing.JTextField tURLPattern; |
544 |
// End of variables declaration//GEN-END:variables |
702 |
// End of variables declaration//GEN-END:variables |
545 |
|
703 |
|
Lines 577-587
Link Here
|
577 |
return true; |
735 |
return true; |
578 |
} |
736 |
} |
579 |
|
737 |
|
580 |
if (rbNoneLibrary.isSelected() && isWebLogicServer){ |
738 |
controller.getProperties().setProperty(WizardDescriptor.PROP_INFO_MESSAGE, null); |
581 |
controller.getProperties().setProperty(WizardDescriptor.PROP_INFO_MESSAGE, NbBundle.getMessage(JSFConfigurationPanelVisual.class, "LBL_Weblogic_Warning")); |
|
|
582 |
} else { |
583 |
controller.getProperties().setProperty(WizardDescriptor.PROP_INFO_MESSAGE, null); |
584 |
} |
585 |
|
739 |
|
586 |
if (rbRegisteredLibrary.isSelected()) { |
740 |
if (rbRegisteredLibrary.isSelected()) { |
587 |
if (jsfLibraries == null || jsfLibraries.size() == 0) { |
741 |
if (jsfLibraries == null || jsfLibraries.size() == 0) { |
Lines 653-658
Link Here
|
653 |
return true; |
807 |
return true; |
654 |
return false; |
808 |
return false; |
655 |
} |
809 |
} |
|
|
810 |
|
656 |
private boolean isWebLogic(String serverInstanceID) { |
811 |
private boolean isWebLogic(String serverInstanceID) { |
657 |
if (serverInstanceID == null || "".equals(serverInstanceID)) { |
812 |
if (serverInstanceID == null || "".equals(serverInstanceID)) { |
658 |
return false; |
813 |
return false; |
Lines 682-754
Link Here
|
682 |
* according web module version. |
837 |
* according web module version. |
683 |
*/ |
838 |
*/ |
684 |
private void initLibSettings(Profile profile, String serverInstanceID) { |
839 |
private void initLibSettings(Profile profile, String serverInstanceID) { |
685 |
if (panel==null || panel.getLibraryType() == null || isServerInstanceChanged()) { |
840 |
boolean serverChanged = isServerInstanceChanged(); |
686 |
try { |
841 |
if (serverChanged) { |
687 |
File[] cp; |
842 |
initServerLibraries(); |
688 |
J2eePlatform platform = null; |
843 |
} |
689 |
try { |
844 |
|
690 |
if (serverInstanceID != null) |
845 |
if (panel==null || panel.getLibraryType() == null || serverChanged) { |
691 |
platform = Deployment.getDefault().getServerInstance(serverInstanceID).getJ2eePlatform(); |
846 |
if (serverJsfLibraries.isEmpty()) { |
692 |
} catch (InstanceRemovedException ex) { |
847 |
rbServerLibrary.setVisible(false); |
693 |
platform = null; |
848 |
serverLibraries.setVisible(false); |
694 |
LOG.log(Level.INFO, org.openide.util.NbBundle.getMessage(JSFConfigurationPanelVisual.class, "SERVER_INSTANCE_REMOVED"), ex); |
849 |
Library preferredLibrary = null; |
695 |
} |
850 |
if (profile.equals(Profile.JAVA_EE_6_FULL) || profile.equals(Profile.JAVA_EE_6_WEB) || profile.equals(Profile.JAVA_EE_5)) { |
696 |
// j2eeplatform can be null, when the target server is not accessible. |
851 |
preferredLibrary = LibraryManager.getDefault().getLibrary(JSFUtils.DEFAULT_JSF_2_0_NAME); |
697 |
if (platform != null) { |
|
|
698 |
cp = platform.getClasspathEntries(); |
699 |
} else { |
852 |
} else { |
700 |
cp = new File[0]; |
853 |
preferredLibrary = LibraryManager.getDefault().getLibrary(JSFUtils.DEFAULT_JSF_1_2_NAME); |
701 |
} |
854 |
} |
702 |
|
855 |
|
703 |
// XXX: there should be a utility class for this: |
856 |
if (preferredLibrary != null) { |
704 |
boolean isJSF = Util.containsClass(Arrays.asList(cp), JSFUtils.FACES_EXCEPTION); |
857 |
// if there is a proffered library, select |
705 |
boolean isJSF12 = Util.containsClass(Arrays.asList(cp), JSFUtils.JSF_1_2__API_SPECIFIC_CLASS); |
858 |
rbRegisteredLibrary.setSelected(true); |
706 |
boolean isJSF20 = Util.containsClass(Arrays.asList(cp), JSFUtils.JSF_2_0__API_SPECIFIC_CLASS); |
859 |
cbLibraries.setSelectedItem(preferredLibrary.getDisplayName()); |
707 |
|
860 |
updateLibrary(); |
708 |
String libName = null; //NOI18N |
|
|
709 |
if (isJSF20) { |
710 |
libName = "JSF 2.0"; //NOI18N |
711 |
} else if (isJSF12) { |
712 |
libName = "JSF 1.2"; //NOI18N |
713 |
} else if (isJSF) { |
714 |
libName = "JSF 1.1"; //NOI18N |
715 |
} else { |
861 |
} else { |
716 |
rbNoneLibrary.setVisible(false); |
862 |
// there is not a proffered library -> select one or select creating new one |
717 |
Library preferredLibrary = null; |
863 |
if (jsfLibraries.isEmpty()) { |
718 |
if (profile.equals(Profile.JAVA_EE_6_FULL) || profile.equals(Profile.JAVA_EE_6_WEB) || profile.equals(Profile.JAVA_EE_5)) { |
864 |
rbNewLibrary.setSelected(true); |
719 |
preferredLibrary = LibraryManager.getDefault().getLibrary(JSFUtils.DEFAULT_JSF_2_0_NAME); |
|
|
720 |
} else { |
721 |
preferredLibrary = LibraryManager.getDefault().getLibrary(JSFUtils.DEFAULT_JSF_1_2_NAME); |
722 |
} |
723 |
|
724 |
if (preferredLibrary != null) { |
725 |
// if there is a proffered library, select |
726 |
rbRegisteredLibrary.setSelected(true); |
727 |
cbLibraries.setSelectedItem(preferredLibrary.getDisplayName()); |
728 |
updateLibrary(); |
729 |
} else { |
730 |
// there is not a proffered library -> select one or select creating new one |
731 |
if (jsfLibraries.size() == 0) { |
732 |
rbNewLibrary.setSelected(true); |
733 |
} |
734 |
} |
865 |
} |
735 |
} |
866 |
} |
736 |
if (libName != null) { |
867 |
} else { |
737 |
if (!rbNoneLibrary.isVisible()) { |
868 |
if (!rbServerLibrary.isVisible()) { |
738 |
rbNoneLibrary.setVisible(true); |
869 |
rbServerLibrary.setVisible(true); |
739 |
repaint(); |
870 |
serverLibraries.setVisible(true); |
740 |
} |
871 |
repaint(); |
741 |
rbNoneLibrary.setText(NbBundle.getMessage(JSFConfigurationPanelVisual.class, "LBL_Any_Library", libName)); //NOI18N |
|
|
742 |
rbNoneLibrary.setSelected(true); |
743 |
if (panel !=null) |
744 |
panel.setLibraryType(JSFConfigurationPanel.LibraryType.NONE); |
745 |
enableNewLibraryComponent(false); |
746 |
enableDefinedLibraryComponent(false); |
747 |
isWebLogicServer = isWebLogic(serverInstanceID); |
748 |
} |
872 |
} |
749 |
|
873 |
rbServerLibrary.setSelected(true); |
750 |
} catch (IOException exception) { |
874 |
if (panel !=null) |
751 |
Exceptions.printStackTrace(exception); |
875 |
panel.setLibraryType(JSFConfigurationPanel.LibraryType.SERVER); |
|
|
876 |
enableNewLibraryComponent(false); |
877 |
enableDefinedLibraryComponent(false); |
878 |
isWebLogicServer = isWebLogic(serverInstanceID); |
752 |
} |
879 |
} |
753 |
} else { |
880 |
} else { |
754 |
switch( panel.getLibraryType()) { |
881 |
switch( panel.getLibraryType()) { |
Lines 760-767
Link Here
|
760 |
rbRegisteredLibrary.setSelected(true); |
887 |
rbRegisteredLibrary.setSelected(true); |
761 |
break; |
888 |
break; |
762 |
} |
889 |
} |
763 |
case NONE: { |
890 |
case SERVER: { |
764 |
rbNoneLibrary.setSelected(true); |
891 |
rbServerLibrary.setSelected(true); |
765 |
enableDefinedLibraryComponent(false); |
892 |
enableDefinedLibraryComponent(false); |
766 |
enableNewLibraryComponent(false); |
893 |
enableNewLibraryComponent(false); |
767 |
break; |
894 |
break; |
Lines 831-845
Link Here
|
831 |
private void updateLibrary(){ |
958 |
private void updateLibrary(){ |
832 |
if (cbLibraries.getItemCount() == 0) |
959 |
if (cbLibraries.getItemCount() == 0) |
833 |
rbRegisteredLibrary.setEnabled(false); |
960 |
rbRegisteredLibrary.setEnabled(false); |
834 |
|
961 |
|
835 |
if (rbNoneLibrary.isSelected()){ |
962 |
if (rbServerLibrary.isSelected()){ |
836 |
enableNewLibraryComponent(false); |
963 |
enableNewLibraryComponent(false); |
837 |
enableDefinedLibraryComponent(false); |
964 |
enableDefinedLibraryComponent(false); |
838 |
panel.setLibraryType(JSFConfigurationPanel.LibraryType.NONE); |
965 |
enableServerLibraryComponent(true); |
|
|
966 |
panel.setLibraryType(JSFConfigurationPanel.LibraryType.SERVER); |
967 |
if (!serverJsfLibraries.isEmpty()) { |
968 |
ServerLibraryItem item = (ServerLibraryItem) serverLibraries.getSelectedItem(); |
969 |
if (item != null) { |
970 |
panel.setServerLibrary(item.getLibrary()); |
971 |
} |
972 |
} |
839 |
panel.getController().setErrorMessage(null); |
973 |
panel.getController().setErrorMessage(null); |
840 |
} else if (rbRegisteredLibrary.isSelected()){ |
974 |
} else if (rbRegisteredLibrary.isSelected()){ |
841 |
enableNewLibraryComponent(false); |
975 |
enableNewLibraryComponent(false); |
842 |
enableDefinedLibraryComponent(true); |
976 |
enableDefinedLibraryComponent(true); |
|
|
977 |
enableServerLibraryComponent(false); |
843 |
panel.setLibraryType(JSFConfigurationPanel.LibraryType.USED); |
978 |
panel.setLibraryType(JSFConfigurationPanel.LibraryType.USED); |
844 |
if (jsfLibraries.size() > 0){ |
979 |
if (jsfLibraries.size() > 0){ |
845 |
panel.setLibrary(jsfLibraries.get(cbLibraries.getSelectedIndex()).getLibrary()); |
980 |
panel.setLibrary(jsfLibraries.get(cbLibraries.getSelectedIndex()).getLibrary()); |
Lines 848-853
Link Here
|
848 |
} else if (rbNewLibrary.isSelected()){ |
983 |
} else if (rbNewLibrary.isSelected()){ |
849 |
enableNewLibraryComponent(true); |
984 |
enableNewLibraryComponent(true); |
850 |
enableDefinedLibraryComponent(false); |
985 |
enableDefinedLibraryComponent(false); |
|
|
986 |
enableServerLibraryComponent(false); |
851 |
panel.setLibraryType(JSFConfigurationPanel.LibraryType.NEW); |
987 |
panel.setLibraryType(JSFConfigurationPanel.LibraryType.NEW); |
852 |
setNewLibraryFolder(); |
988 |
setNewLibraryFolder(); |
853 |
} |
989 |
} |
Lines 857-862
Link Here
|
857 |
private void enableDefinedLibraryComponent(boolean enabled){ |
993 |
private void enableDefinedLibraryComponent(boolean enabled){ |
858 |
cbLibraries.setEnabled(enabled); |
994 |
cbLibraries.setEnabled(enabled); |
859 |
} |
995 |
} |
|
|
996 |
|
997 |
private void enableServerLibraryComponent(boolean enabled){ |
998 |
serverLibraries.setEnabled(enabled); |
999 |
} |
860 |
|
1000 |
|
861 |
private void enableNewLibraryComponent(boolean enabled){ |
1001 |
private void enableNewLibraryComponent(boolean enabled){ |
862 |
lDirectory.setEnabled(enabled); |
1002 |
lDirectory.setEnabled(enabled); |
Lines 914-917
Link Here
|
914 |
return library.getDisplayName(); |
1054 |
return library.getDisplayName(); |
915 |
} |
1055 |
} |
916 |
} |
1056 |
} |
|
|
1057 |
|
1058 |
private static class ServerLibraryItem implements Comparable<ServerLibraryItem> { |
1059 |
|
1060 |
private final ServerLibrary library; |
1061 |
|
1062 |
private final JSFVersion version; |
1063 |
|
1064 |
private String name; |
1065 |
|
1066 |
public ServerLibraryItem(ServerLibrary library, JSFVersion version) { |
1067 |
this.library = library; |
1068 |
this.version = version; |
1069 |
} |
1070 |
|
1071 |
public ServerLibrary getLibrary() { |
1072 |
return library; |
1073 |
} |
1074 |
|
1075 |
public JSFVersion getVersion() { |
1076 |
return version; |
1077 |
} |
1078 |
|
1079 |
@Override |
1080 |
public String toString() { |
1081 |
synchronized (this) { |
1082 |
if (name != null) { |
1083 |
return name; |
1084 |
} |
1085 |
} |
1086 |
|
1087 |
StringBuilder sb = new StringBuilder(); |
1088 |
switch (version) { |
1089 |
case JSF_1_0: |
1090 |
sb.append("JSF 1.0"); // NOI18N |
1091 |
break; |
1092 |
case JSF_1_1: |
1093 |
sb.append("JSF 1.1"); // NOI18N |
1094 |
break; |
1095 |
case JSF_1_2: |
1096 |
sb.append("JSF 1.2"); // NOI18N |
1097 |
break; |
1098 |
case JSF_2_0: |
1099 |
sb.append("JSF 2.0"); // NOI18N |
1100 |
break; |
1101 |
} |
1102 |
if (library != null && (library.getImplementationTitle() != null || library.getImplementationVersion() != null)) { |
1103 |
sb.append(" "); // NOI18N |
1104 |
sb.append("["); // NOI18N |
1105 |
if (library.getImplementationTitle() != null) { |
1106 |
sb.append(library.getImplementationTitle()); |
1107 |
} |
1108 |
if (library.getImplementationVersion() != null) { |
1109 |
if (library.getImplementationTitle() != null) { |
1110 |
sb.append(" - "); // NOI18N |
1111 |
} |
1112 |
sb.append(library.getImplementationVersion().toString()); |
1113 |
} |
1114 |
sb.append("]"); // NOI18N |
1115 |
} |
1116 |
// result is the same as all fields are final |
1117 |
synchronized (this) { |
1118 |
name = sb.toString(); |
1119 |
return name; |
1120 |
} |
1121 |
} |
1122 |
|
1123 |
@Override |
1124 |
public boolean equals(Object obj) { |
1125 |
if (obj == null) { |
1126 |
return false; |
1127 |
} |
1128 |
if (getClass() != obj.getClass()) { |
1129 |
return false; |
1130 |
} |
1131 |
final ServerLibraryItem other = (ServerLibraryItem) obj; |
1132 |
if ((this.toString() == null) ? (other.toString() != null) : !this.toString().equals(other.toString())) { |
1133 |
return false; |
1134 |
} |
1135 |
return true; |
1136 |
} |
1137 |
|
1138 |
@Override |
1139 |
public int hashCode() { |
1140 |
int hash = 7; |
1141 |
hash = 67 * hash + (this.toString() != null ? this.toString().hashCode() : 0); |
1142 |
return hash; |
1143 |
} |
1144 |
|
1145 |
@Override |
1146 |
public int compareTo(ServerLibraryItem o) { |
1147 |
return -this.toString().compareTo(o.toString()); |
1148 |
} |
1149 |
|
1150 |
} |
917 |
} |
1151 |
} |