Lines 45-50
Link Here
|
45 |
package org.netbeans.modules.web.jsf.wizards; |
45 |
package org.netbeans.modules.web.jsf.wizards; |
46 |
|
46 |
|
47 |
import java.awt.Component; |
47 |
import java.awt.Component; |
|
|
48 |
import java.awt.event.ActionEvent; |
49 |
import java.awt.event.ActionListener; |
50 |
import java.awt.event.MouseAdapter; |
51 |
import java.awt.event.MouseEvent; |
48 |
import java.io.File; |
52 |
import java.io.File; |
49 |
import java.io.IOException; |
53 |
import java.io.IOException; |
50 |
import java.net.URL; |
54 |
import java.net.URL; |
Lines 62-70
Link Here
|
62 |
import java.util.logging.Logger; |
66 |
import java.util.logging.Logger; |
63 |
import java.util.regex.Pattern; |
67 |
import java.util.regex.Pattern; |
64 |
import javax.swing.DefaultComboBoxModel; |
68 |
import javax.swing.DefaultComboBoxModel; |
|
|
69 |
import javax.swing.DefaultListModel; |
70 |
import javax.swing.JButton; |
71 |
import javax.swing.JComponent; |
65 |
import javax.swing.JFileChooser; |
72 |
import javax.swing.JFileChooser; |
|
|
73 |
import javax.swing.JTable; |
74 |
import javax.swing.ListSelectionModel; |
66 |
import javax.swing.SwingUtilities; |
75 |
import javax.swing.SwingUtilities; |
|
|
76 |
import javax.swing.UIManager; |
77 |
import javax.swing.event.ChangeEvent; |
78 |
import javax.swing.event.ChangeListener; |
67 |
import javax.swing.event.DocumentListener; |
79 |
import javax.swing.event.DocumentListener; |
|
|
80 |
import javax.swing.table.AbstractTableModel; |
81 |
import javax.swing.table.DefaultTableCellRenderer; |
82 |
import javax.swing.table.TableCellRenderer; |
68 |
import org.netbeans.api.j2ee.core.Profile; |
83 |
import org.netbeans.api.j2ee.core.Profile; |
69 |
import org.netbeans.api.project.libraries.Library; |
84 |
import org.netbeans.api.project.libraries.Library; |
70 |
import org.netbeans.api.project.libraries.LibraryManager; |
85 |
import org.netbeans.api.project.libraries.LibraryManager; |
Lines 78-91
Link Here
|
78 |
import org.netbeans.modules.web.api.webmodule.ExtenderController; |
93 |
import org.netbeans.modules.web.api.webmodule.ExtenderController; |
79 |
import org.netbeans.modules.web.api.webmodule.ExtenderController.Properties; |
94 |
import org.netbeans.modules.web.api.webmodule.ExtenderController.Properties; |
80 |
import org.netbeans.modules.web.jsf.JSFUtils; |
95 |
import org.netbeans.modules.web.jsf.JSFUtils; |
81 |
import org.netbeans.modules.web.jsf.api.components.JsfComponents; |
96 |
import org.netbeans.modules.web.jsfapi.api.JSFVersion; |
82 |
import org.netbeans.modules.web.jsf.api.components.JsfComponentDescriptor; |
97 |
import org.netbeans.modules.web.jsfapi.spi.components.JsfComponentImplementation; |
83 |
import org.netbeans.modules.web.jsf.api.facesmodel.JSFVersion; |
98 |
import org.netbeans.modules.web.jsfapi.spi.components.JsfComponentCustomizer; |
|
|
99 |
import org.netbeans.modules.web.jsfapi.spi.components.JsfComponentProvider; |
100 |
import org.openide.DialogDescriptor; |
101 |
import org.openide.DialogDisplayer; |
84 |
import org.openide.WizardDescriptor; |
102 |
import org.openide.WizardDescriptor; |
85 |
import org.openide.util.Exceptions; |
103 |
import org.openide.util.Exceptions; |
86 |
import org.openide.util.HelpCtx; |
104 |
import org.openide.util.HelpCtx; |
|
|
105 |
import org.openide.util.Lookup; |
87 |
import org.openide.util.NbBundle; |
106 |
import org.openide.util.NbBundle; |
88 |
import org.openide.util.RequestProcessor; |
107 |
import org.openide.util.RequestProcessor; |
|
|
108 |
import org.openide.util.lookup.Lookups; |
89 |
|
109 |
|
90 |
/** |
110 |
/** |
91 |
* |
111 |
* |
Lines 102-108
Link Here
|
102 |
|
122 |
|
103 |
private final List<LibraryItem> jsfLibraries = new ArrayList<LibraryItem>(); |
123 |
private final List<LibraryItem> jsfLibraries = new ArrayList<LibraryItem>(); |
104 |
// private final List<JsfComponentDescriptor> componentsLibraries = new ArrayList<JsfComponentDescriptor>(); |
124 |
// private final List<JsfComponentDescriptor> componentsLibraries = new ArrayList<JsfComponentDescriptor>(); |
105 |
private final Map<JSFVersion, List<JsfComponentDescriptor>> componentsMap = new HashMap<JSFVersion, List<JsfComponentDescriptor>>(); |
125 |
private final Map<JSFVersion, List<JsfComponentImplementation>> componentsMap = new HashMap<JSFVersion, List<JsfComponentImplementation>>(); |
106 |
/** |
126 |
/** |
107 |
* Do not modify it directly, use setJsfVersion method |
127 |
* Do not modify it directly, use setJsfVersion method |
108 |
*/ |
128 |
*/ |
Lines 115-130
Link Here
|
115 |
private String currentServerInstanceID; |
135 |
private String currentServerInstanceID; |
116 |
private final List<String> excludeLibs = Arrays.asList("javaee-web-api-6.0", "javaee-api-6.0", "jsp-compilation"); //NOI18N |
136 |
private final List<String> excludeLibs = Arrays.asList("javaee-web-api-6.0", "javaee-api-6.0", "jsp-compilation"); //NOI18N |
117 |
private boolean isWebLogicServer = false; |
137 |
private boolean isWebLogicServer = false; |
|
|
138 |
|
139 |
// Jsf component libraries related |
140 |
private JSFComponentsTableModel jsfComponentsTableModel; |
141 |
|
142 |
private static final Lookup.Result<? extends JsfComponentProvider> jsfComponentProviders = |
143 |
Lookups.forPath(JsfComponentProvider.COMPONENTS_PATH).lookupResult(JsfComponentProvider.class); |
144 |
|
118 |
/** Creates new form JSFConfigurationPanelVisual */ |
145 |
/** Creates new form JSFConfigurationPanelVisual */ |
119 |
public JSFConfigurationPanelVisual(JSFConfigurationPanel panel, boolean customizer) { |
146 |
public JSFConfigurationPanelVisual(JSFConfigurationPanel panel, boolean customizer) { |
120 |
this.panel = panel; |
147 |
this.panel = panel; |
121 |
this.customizer = customizer; |
148 |
this.customizer = customizer; |
|
|
149 |
this.jsfComponentsTableModel = new JSFComponentsTableModel(customizer); |
122 |
|
150 |
|
123 |
initComponents(); |
151 |
initComponents(); |
124 |
|
152 |
|
125 |
tURLPattern.getDocument().addDocumentListener(this); |
153 |
tURLPattern.getDocument().addDocumentListener(this); |
126 |
cbPackageJars.setVisible(false); |
154 |
cbPackageJars.setVisible(false); |
127 |
cbJsfComponents.setModel(new DefaultComboBoxModel(new ComponentsLibraryItem[]{new ComponentsLibraryItem(null)})); |
155 |
|
|
|
156 |
// update JSF components list |
157 |
jsfComponentsTable.setModel(jsfComponentsTableModel); |
158 |
JsfComponentsTableCellRenderer renderer = new JsfComponentsTableCellRenderer(); |
159 |
renderer.setBooleanRenderer(jsfComponentsTable.getDefaultRenderer(Boolean.class)); |
160 |
renderer.setJButtonRenderer(new JTableButtonRenderer()); |
161 |
jsfComponentsTable.setDefaultRenderer(JsfComponentImplementation.class, renderer); |
162 |
jsfComponentsTable.setDefaultRenderer(Boolean.class, renderer); |
163 |
jsfComponentsTable.setDefaultRenderer(JButton.class, renderer); |
164 |
jsfComponentsTable.addMouseListener(new JTableButtonMouseListener(jsfComponentsTable)); |
165 |
initJsfComponentTableVisualProperties(jsfComponentsTable); |
128 |
} |
166 |
} |
129 |
|
167 |
|
130 |
@Override |
168 |
@Override |
Lines 205-211
Link Here
|
205 |
updateJsfComponents(); |
243 |
updateJsfComponents(); |
206 |
} |
244 |
} |
207 |
}); |
245 |
}); |
208 |
LOG.finest("Time spent in initLibraries in Runnable = "+(System.currentTimeMillis()-time) +" ms"); //NOI18N |
246 |
LOG.log(Level.FINEST, "Time spent in initLibraries in Runnable = {0} ms", (System.currentTimeMillis()-time)); //NOI18N |
209 |
} |
247 |
} |
210 |
} |
248 |
} |
211 |
}; |
249 |
}; |
Lines 213-231
Link Here
|
213 |
|
251 |
|
214 |
libsInitialized = true; |
252 |
libsInitialized = true; |
215 |
// repaint(); |
253 |
// repaint(); |
216 |
LOG.finest("Time spent in "+this.getClass().getName() +" initLibraries = "+(System.currentTimeMillis()-time) +" ms"); //NOI18N |
254 |
LOG.log(Level.FINEST, "Time spent in {0} initLibraries = {1} ms", new Object[]{this.getClass().getName(), System.currentTimeMillis()-time}); //NOI18N |
217 |
} |
255 |
} |
218 |
|
256 |
|
219 |
private void initJsfComponentsLibraries() { |
257 |
private void initJsfComponentsLibraries() { |
220 |
if (jsfComponentsInitialized) |
258 |
if (jsfComponentsInitialized) |
221 |
return; |
259 |
return; |
222 |
for (JsfComponentDescriptor components : JsfComponents.findJsfComponents()) { |
260 |
|
223 |
List<JsfComponentDescriptor> list = componentsMap.get(components.getJsfVersion()); |
261 |
List<JsfComponentImplementation> jsfComponentDescriptors = new ArrayList<JsfComponentImplementation>(); |
|
|
262 |
for (JsfComponentProvider provider: jsfComponentProviders.allInstances()) { |
263 |
jsfComponentDescriptors.addAll(provider.getJsfComponents()); |
264 |
} |
265 |
|
266 |
for (JsfComponentImplementation jsfDescriptor : jsfComponentDescriptors) { |
267 |
List<JsfComponentImplementation> list = componentsMap.get(jsfDescriptor.getJsfVersion()); |
224 |
if (list == null) { |
268 |
if (list == null) { |
225 |
list = new ArrayList<JsfComponentDescriptor>(); |
269 |
list = new ArrayList<JsfComponentImplementation>(); |
226 |
} |
270 |
} |
227 |
list.add(components); |
271 |
list.add(jsfDescriptor); |
228 |
componentsMap.put(components.getJsfVersion(), list); |
272 |
componentsMap.put(jsfDescriptor.getJsfVersion(), list); |
229 |
} |
273 |
} |
230 |
jsfComponentsInitialized = true; |
274 |
jsfComponentsInitialized = true; |
231 |
if (currentJSFVersion !=null) { |
275 |
if (currentJSFVersion !=null) { |
Lines 473-481
Link Here
|
473 |
cbPreferredLang = new javax.swing.JComboBox(); |
517 |
cbPreferredLang = new javax.swing.JComboBox(); |
474 |
jLabel1 = new javax.swing.JLabel(); |
518 |
jLabel1 = new javax.swing.JLabel(); |
475 |
componentsPanel = new javax.swing.JPanel(); |
519 |
componentsPanel = new javax.swing.JPanel(); |
476 |
cbJsfComponents = new javax.swing.JComboBox(); |
520 |
jsfComponentsLabel = new javax.swing.JLabel(); |
477 |
jLabel2 = new javax.swing.JLabel(); |
521 |
jsfComponentsScrollPane = new javax.swing.JScrollPane(); |
478 |
jLabel3 = new javax.swing.JLabel(); |
522 |
jsfComponentsTable = new javax.swing.JTable(); |
479 |
|
523 |
|
480 |
setLayout(new java.awt.CardLayout()); |
524 |
setLayout(new java.awt.CardLayout()); |
481 |
|
525 |
|
Lines 571-598
Link Here
|
571 |
.addGroup(libPanelLayout.createSequentialGroup() |
615 |
.addGroup(libPanelLayout.createSequentialGroup() |
572 |
.addContainerGap() |
616 |
.addContainerGap() |
573 |
.addGroup(libPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
617 |
.addGroup(libPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
574 |
.addComponent(rbNewLibrary, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 478, Short.MAX_VALUE) |
618 |
.addComponent(rbNewLibrary, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 485, Short.MAX_VALUE) |
575 |
.addGroup(libPanelLayout.createSequentialGroup() |
619 |
.addGroup(libPanelLayout.createSequentialGroup() |
576 |
.addGap(22, 22, 22) |
620 |
.addGap(22, 22, 22) |
577 |
.addGroup(libPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
621 |
.addGroup(libPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
578 |
.addComponent(cbPackageJars) |
622 |
.addComponent(cbPackageJars) |
579 |
.addComponent(lVersion) |
623 |
.addComponent(lVersion) |
580 |
.addComponent(lDirectory)) |
624 |
.addComponent(lDirectory)) |
581 |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 202, Short.MAX_VALUE)) |
625 |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 245, Short.MAX_VALUE)) |
582 |
.addGroup(libPanelLayout.createSequentialGroup() |
626 |
.addGroup(libPanelLayout.createSequentialGroup() |
583 |
.addGroup(libPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) |
627 |
.addGroup(libPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) |
584 |
.addComponent(rbServerLibrary, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) |
628 |
.addComponent(rbServerLibrary, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) |
585 |
.addComponent(rbRegisteredLibrary, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) |
629 |
.addComponent(rbRegisteredLibrary, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) |
586 |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) |
630 |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) |
587 |
.addGroup(libPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
631 |
.addGroup(libPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
588 |
.addComponent(cbLibraries, 0, 292, Short.MAX_VALUE) |
632 |
.addComponent(cbLibraries, 0, 322, Short.MAX_VALUE) |
589 |
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, libPanelLayout.createSequentialGroup() |
633 |
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, libPanelLayout.createSequentialGroup() |
590 |
.addGroup(libPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) |
634 |
.addGroup(libPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) |
591 |
.addComponent(jtNewLibraryName, javax.swing.GroupLayout.DEFAULT_SIZE, 187, Short.MAX_VALUE) |
635 |
.addComponent(jtNewLibraryName, javax.swing.GroupLayout.DEFAULT_SIZE, 245, Short.MAX_VALUE) |
592 |
.addComponent(jtFolder, javax.swing.GroupLayout.DEFAULT_SIZE, 187, Short.MAX_VALUE)) |
636 |
.addComponent(jtFolder, javax.swing.GroupLayout.DEFAULT_SIZE, 245, Short.MAX_VALUE)) |
593 |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) |
637 |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) |
594 |
.addComponent(jbBrowse)) |
638 |
.addComponent(jbBrowse)) |
595 |
.addComponent(serverLibraries, 0, 292, Short.MAX_VALUE)))) |
639 |
.addComponent(serverLibraries, 0, 322, Short.MAX_VALUE)))) |
596 |
.addContainerGap()) |
640 |
.addContainerGap()) |
597 |
); |
641 |
); |
598 |
libPanelLayout.setVerticalGroup( |
642 |
libPanelLayout.setVerticalGroup( |
Lines 617-623
Link Here
|
617 |
.addComponent(lVersion)) |
661 |
.addComponent(lVersion)) |
618 |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) |
662 |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) |
619 |
.addComponent(cbPackageJars) |
663 |
.addComponent(cbPackageJars) |
620 |
.addContainerGap(28, Short.MAX_VALUE)) |
664 |
.addContainerGap(22, Short.MAX_VALUE)) |
621 |
); |
665 |
); |
622 |
|
666 |
|
623 |
cbPackageJars.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(JSFConfigurationPanelVisual.class, "ACSD_PackageJarToWar")); // NOI18N |
667 |
cbPackageJars.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(JSFConfigurationPanelVisual.class, "ACSD_PackageJarToWar")); // NOI18N |
Lines 650-656
Link Here
|
650 |
.addGroup(confPanelLayout.createSequentialGroup() |
694 |
.addGroup(confPanelLayout.createSequentialGroup() |
651 |
.addComponent(lURLPattern) |
695 |
.addComponent(lURLPattern) |
652 |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) |
696 |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) |
653 |
.addComponent(tURLPattern, javax.swing.GroupLayout.DEFAULT_SIZE, 276, Short.MAX_VALUE)) |
697 |
.addComponent(tURLPattern, javax.swing.GroupLayout.DEFAULT_SIZE, 326, Short.MAX_VALUE)) |
654 |
.addGroup(confPanelLayout.createSequentialGroup() |
698 |
.addGroup(confPanelLayout.createSequentialGroup() |
655 |
.addComponent(jLabel1) |
699 |
.addComponent(jLabel1) |
656 |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) |
700 |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) |
Lines 675-690
Link Here
|
675 |
|
719 |
|
676 |
jsfTabbedPane.addTab(org.openide.util.NbBundle.getMessage(JSFConfigurationPanelVisual.class, "LBL_TAB_Configuration"), confPanel); // NOI18N |
720 |
jsfTabbedPane.addTab(org.openide.util.NbBundle.getMessage(JSFConfigurationPanelVisual.class, "LBL_TAB_Configuration"), confPanel); // NOI18N |
677 |
|
721 |
|
678 |
cbJsfComponents.addActionListener(new java.awt.event.ActionListener() { |
722 |
jsfComponentsLabel.setText(getJsfComponentsLabelText()); |
679 |
public void actionPerformed(java.awt.event.ActionEvent evt) { |
723 |
|
680 |
cbJsfComponentsActionPerformed(evt); |
724 |
jsfComponentsTable.setModel(new javax.swing.table.DefaultTableModel( |
|
|
725 |
new Object [][] { |
726 |
{null, null, null, null}, |
727 |
{null, null, null, null}, |
728 |
{null, null, null, null}, |
729 |
{null, null, null, null} |
730 |
}, |
731 |
new String [] { |
732 |
"Title 1", "Title 2", "Title 3", "Title 4" |
681 |
} |
733 |
} |
682 |
}); |
734 |
)); |
683 |
|
735 |
jsfComponentsScrollPane.setViewportView(jsfComponentsTable); |
684 |
jLabel2.setLabelFor(cbJsfComponents); |
|
|
685 |
jLabel2.setText(org.openide.util.NbBundle.getMessage(JSFConfigurationPanelVisual.class, "LBL_JSF_Components")); // NOI18N |
686 |
|
687 |
jLabel3.setText(org.openide.util.NbBundle.getMessage(JSFConfigurationPanelVisual.class, "LBL_JSF_Components_Desc")); // NOI18N |
688 |
|
736 |
|
689 |
javax.swing.GroupLayout componentsPanelLayout = new javax.swing.GroupLayout(componentsPanel); |
737 |
javax.swing.GroupLayout componentsPanelLayout = new javax.swing.GroupLayout(componentsPanel); |
690 |
componentsPanel.setLayout(componentsPanelLayout); |
738 |
componentsPanel.setLayout(componentsPanelLayout); |
Lines 693-715
Link Here
|
693 |
.addGroup(componentsPanelLayout.createSequentialGroup() |
741 |
.addGroup(componentsPanelLayout.createSequentialGroup() |
694 |
.addContainerGap() |
742 |
.addContainerGap() |
695 |
.addGroup(componentsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
743 |
.addGroup(componentsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
696 |
.addGroup(componentsPanelLayout.createSequentialGroup() |
744 |
.addComponent(jsfComponentsScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 479, Short.MAX_VALUE) |
697 |
.addComponent(jLabel2) |
745 |
.addComponent(jsfComponentsLabel)) |
698 |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) |
746 |
.addContainerGap()) |
699 |
.addComponent(cbJsfComponents, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) |
|
|
700 |
.addComponent(jLabel3)) |
701 |
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) |
702 |
); |
747 |
); |
703 |
componentsPanelLayout.setVerticalGroup( |
748 |
componentsPanelLayout.setVerticalGroup( |
704 |
componentsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
749 |
componentsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
705 |
.addGroup(componentsPanelLayout.createSequentialGroup() |
750 |
.addGroup(componentsPanelLayout.createSequentialGroup() |
706 |
.addContainerGap() |
751 |
.addContainerGap() |
707 |
.addComponent(jLabel3) |
752 |
.addComponent(jsfComponentsLabel) |
708 |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) |
753 |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) |
709 |
.addGroup(componentsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) |
754 |
.addComponent(jsfComponentsScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 153, Short.MAX_VALUE) |
710 |
.addComponent(jLabel2) |
755 |
.addContainerGap()) |
711 |
.addComponent(cbJsfComponents, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) |
|
|
712 |
.addContainerGap(125, Short.MAX_VALUE)) |
713 |
); |
756 |
); |
714 |
|
757 |
|
715 |
jsfTabbedPane.addTab(org.openide.util.NbBundle.getMessage(JSFConfigurationPanelVisual.class, "LBL_TAB_Components"), componentsPanel); // NOI18N |
758 |
jsfTabbedPane.addTab(org.openide.util.NbBundle.getMessage(JSFConfigurationPanelVisual.class, "LBL_TAB_Components"), componentsPanel); // NOI18N |
Lines 781-805
Link Here
|
781 |
} |
824 |
} |
782 |
updatePreferredLanguages(); |
825 |
updatePreferredLanguages(); |
783 |
}//GEN-LAST:event_serverLibrariesActionPerformed |
826 |
}//GEN-LAST:event_serverLibrariesActionPerformed |
784 |
|
|
|
785 |
private void cbJsfComponentsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbJsfComponentsActionPerformed |
786 |
// TODO add your handling code here: |
787 |
panel.setJsfComponentDescriptor(((ComponentsLibraryItem)cbJsfComponents.getSelectedItem()).getJsfComponentDescriptor()); |
788 |
}//GEN-LAST:event_cbJsfComponentsActionPerformed |
789 |
|
827 |
|
790 |
|
828 |
|
791 |
// Variables declaration - do not modify//GEN-BEGIN:variables |
829 |
// Variables declaration - do not modify//GEN-BEGIN:variables |
792 |
private javax.swing.ButtonGroup buttonGroup1; |
830 |
private javax.swing.ButtonGroup buttonGroup1; |
793 |
private javax.swing.JComboBox cbJsfComponents; |
|
|
794 |
private javax.swing.JComboBox cbLibraries; |
831 |
private javax.swing.JComboBox cbLibraries; |
795 |
private javax.swing.JCheckBox cbPackageJars; |
832 |
private javax.swing.JCheckBox cbPackageJars; |
796 |
private javax.swing.JComboBox cbPreferredLang; |
833 |
private javax.swing.JComboBox cbPreferredLang; |
797 |
private javax.swing.JPanel componentsPanel; |
834 |
private javax.swing.JPanel componentsPanel; |
798 |
private javax.swing.JPanel confPanel; |
835 |
private javax.swing.JPanel confPanel; |
799 |
private javax.swing.JLabel jLabel1; |
836 |
private javax.swing.JLabel jLabel1; |
800 |
private javax.swing.JLabel jLabel2; |
|
|
801 |
private javax.swing.JLabel jLabel3; |
802 |
private javax.swing.JButton jbBrowse; |
837 |
private javax.swing.JButton jbBrowse; |
|
|
838 |
private javax.swing.JLabel jsfComponentsLabel; |
839 |
private javax.swing.JScrollPane jsfComponentsScrollPane; |
840 |
private javax.swing.JTable jsfComponentsTable; |
803 |
private javax.swing.JTabbedPane jsfTabbedPane; |
841 |
private javax.swing.JTabbedPane jsfTabbedPane; |
804 |
private javax.swing.JTextField jtFolder; |
842 |
private javax.swing.JTextField jtFolder; |
805 |
private javax.swing.JTextField jtNewLibraryName; |
843 |
private javax.swing.JTextField jtNewLibraryName; |
Lines 900-907
Link Here
|
900 |
} |
938 |
} |
901 |
} |
939 |
} |
902 |
if (!isServerRegistered(serverInstanceID)) { //NOI18N |
940 |
if (!isServerRegistered(serverInstanceID)) { //NOI18N |
903 |
controller.getProperties().setProperty(WizardDescriptor.PROP_INFO_MESSAGE, NbBundle.getMessage(JSFConfigurationPanelVisual.class, "ERR_MissingTargetServer")); |
941 |
controller.getProperties().setProperty(WizardDescriptor.PROP_INFO_MESSAGE, |
|
|
942 |
NbBundle.getMessage(JSFConfigurationPanelVisual.class, "ERR_MissingTargetServer")); //NOI18N |
904 |
} |
943 |
} |
|
|
944 |
|
945 |
// check all enabled JSF component libraries |
946 |
for (JsfComponentImplementation jsfComponentDescriptor : getActivedJsfDescriptors()) { |
947 |
if (jsfComponentDescriptor.getJsfComponentCustomizer(false, null) != null && |
948 |
!jsfComponentDescriptor.getJsfComponentCustomizer(false, null).isValid()) { |
949 |
controller.getProperties().setProperty(WizardDescriptor.PROP_INFO_MESSAGE, |
950 |
NbBundle.getMessage(JSFConfigurationPanelVisual.class, "LBL_JsfComponentNotValid", jsfComponentDescriptor.getName())); // NOI18N |
951 |
return false; |
952 |
} |
953 |
} |
954 |
|
905 |
controller.setErrorMessage(null); |
955 |
controller.setErrorMessage(null); |
906 |
return true; |
956 |
return true; |
907 |
} |
957 |
} |
Lines 1087-1092
Link Here
|
1087 |
tURLPattern.setText(pattern); |
1137 |
tURLPattern.setText(pattern); |
1088 |
} |
1138 |
} |
1089 |
|
1139 |
|
|
|
1140 |
public List<? extends JsfComponentImplementation> getActivedJsfDescriptors() { |
1141 |
List<JsfComponentImplementation> activatedDescriptors = new ArrayList<JsfComponentImplementation>(); |
1142 |
for (int i = 0; i < jsfComponentsTableModel.getRowCount(); i++) { |
1143 |
if (jsfComponentsTableModel.getItem(i).isSelected()) |
1144 |
activatedDescriptors.add(jsfComponentsTableModel.getItem(i).getJsfComponent()); |
1145 |
} |
1146 |
return activatedDescriptors; |
1147 |
} |
1148 |
|
1090 |
public boolean packageJars(){ |
1149 |
public boolean packageJars(){ |
1091 |
return cbPackageJars.isSelected(); |
1150 |
return cbPackageJars.isSelected(); |
1092 |
} |
1151 |
} |
Lines 1135-1154
Link Here
|
1135 |
updatePreferredLanguages(); |
1194 |
updatePreferredLanguages(); |
1136 |
} |
1195 |
} |
1137 |
private void updateJsfComponentsModel(JSFVersion version) { |
1196 |
private void updateJsfComponentsModel(JSFVersion version) { |
1138 |
List<ComponentsLibraryItem> componentsList = new ArrayList<ComponentsLibraryItem>(); |
1197 |
List<JsfComponentImplementation> descriptors = componentsMap.get(version); |
1139 |
//Add empty default component |
1198 |
jsfComponentsTableModel.removeAllItems(); |
1140 |
componentsList.add(new ComponentsLibraryItem(null)); |
1199 |
if (descriptors != null) { |
1141 |
List<JsfComponentDescriptor> providers = componentsMap.get(version); |
1200 |
for (JsfComponentImplementation descriptor : descriptors) { |
1142 |
if (providers != null) { |
1201 |
addFrameworkToModel(descriptor); |
1143 |
for (JsfComponentDescriptor provider : providers) { |
|
|
1144 |
componentsList.add(new ComponentsLibraryItem(provider)); |
1145 |
} |
1202 |
} |
1146 |
} |
1203 |
} |
1147 |
cbJsfComponents.setModel(new DefaultComboBoxModel(componentsList.toArray(new ComponentsLibraryItem[componentsList.size()]))); |
1204 |
|
|
|
1205 |
jsfComponentsTable.setModel(jsfComponentsTableModel); |
1148 |
} |
1206 |
} |
1149 |
|
1207 |
|
1150 |
private void updateJsfComponents() { |
1208 |
private void updateJsfComponents() { |
1151 |
panel.setJsfComponentDescriptor(((ComponentsLibraryItem)cbJsfComponents.getSelectedItem()).getJsfComponentDescriptor()); |
1209 |
if (currentJSFVersion != null && customizer) { |
|
|
1210 |
initJsfComponentLibraries(currentJSFVersion); |
1211 |
} |
1152 |
} |
1212 |
} |
1153 |
|
1213 |
|
1154 |
private void enableDefinedLibraryComponent(boolean enabled){ |
1214 |
private void enableDefinedLibraryComponent(boolean enabled){ |
Lines 1193-1198
Link Here
|
1193 |
return message; |
1253 |
return message; |
1194 |
} |
1254 |
} |
1195 |
|
1255 |
|
|
|
1256 |
private String getJsfComponentsLabelText() { |
1257 |
if (!customizer) { |
1258 |
return org.openide.util.NbBundle.getMessage(JSFConfigurationPanelVisual.class, "LBL_JSF_Components_Desc_New_Project"); //NOI18N |
1259 |
} else { |
1260 |
return org.openide.util.NbBundle.getMessage(JSFConfigurationPanelVisual.class, "LBL_JSF_Components_Desc_Customizer"); //NOI18N |
1261 |
} |
1262 |
} |
1263 |
|
1196 |
private static class LibraryItem { |
1264 |
private static class LibraryItem { |
1197 |
|
1265 |
|
1198 |
private Library library; |
1266 |
private Library library; |
Lines 1309-1338
Link Here
|
1309 |
} |
1377 |
} |
1310 |
|
1378 |
|
1311 |
} |
1379 |
} |
|
|
1380 |
|
1381 |
private void initJsfComponentLibraries(JSFVersion version) { |
1382 |
List<JsfComponentImplementation> descriptors = componentsMap.get(version); |
1383 |
for (int i = 0; i < descriptors.size(); i++) { |
1384 |
JsfComponentImplementation jsfComponentDescriptor = descriptors.get(i); |
1385 |
if (jsfComponentDescriptor.isInWebModule(panel.getWebModule())) { |
1386 |
jsfComponentsTable.setValueAt(true, i, 0); |
1387 |
} |
1388 |
} |
1389 |
} |
1312 |
|
1390 |
|
1313 |
private static class ComponentsLibraryItem { |
1391 |
private void initJsfComponentTableVisualProperties(JTable table) { |
1314 |
private JsfComponentDescriptor jsfComponentsProvider; |
1392 |
table.setRowSelectionAllowed(true); |
1315 |
private String defaultName = "None"; |
1393 |
table.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION); |
|
|
1394 |
|
1395 |
table.setTableHeader(null); |
1396 |
|
1397 |
table.setRowHeight(jsfComponentsTable.getRowHeight() + 4); |
1398 |
table.setIntercellSpacing(new java.awt.Dimension(0, 0)); |
1399 |
// set the color of the table's JViewport |
1400 |
table.getParent().setBackground(table.getBackground()); |
1401 |
table.setShowHorizontalLines(false); |
1402 |
table.setShowVerticalLines(false); |
1403 |
|
1404 |
table.getColumnModel().getColumn(0).setMaxWidth(30); |
1405 |
table.getColumnModel().getColumn(2).setMaxWidth(100); |
1406 |
|
1407 |
if (customizer) { |
1408 |
table.setEnabled(false); |
1409 |
} |
1410 |
} |
1411 |
|
1412 |
private void addFrameworkToModel(JsfComponentImplementation component) { |
1413 |
jsfComponentsTableModel.addItem(new JSFComponentModelItem(component)); |
1414 |
} |
1415 |
|
1416 |
private static void fireJsfDialogUpdate(JsfComponentCustomizer jsfComponentExtender, DialogDescriptor dialogDescriptor) { |
1417 |
if (jsfComponentExtender.getErrorMessage() != null) { |
1418 |
dialogDescriptor.getNotificationLineSupport().setErrorMessage(jsfComponentExtender.getErrorMessage()); |
1419 |
} else if (jsfComponentExtender.getWarningMessage() != null) { |
1420 |
dialogDescriptor.getNotificationLineSupport().setWarningMessage(jsfComponentExtender.getWarningMessage()); |
1421 |
} else { |
1422 |
dialogDescriptor.getNotificationLineSupport().clearMessages(); |
1423 |
} |
1424 |
dialogDescriptor.setValid(jsfComponentExtender.isValid()); |
1425 |
} |
1426 |
|
1427 |
public static class JsfComponentsTableCellRenderer extends DefaultTableCellRenderer { |
1428 |
|
1429 |
private TableCellRenderer jbuttonRenderer; |
1430 |
private TableCellRenderer booleanRenderer; |
1431 |
|
1432 |
@Override |
1433 |
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { |
1434 |
if (value instanceof JsfComponentImplementation) { |
1435 |
JsfComponentImplementation item = (JsfComponentImplementation) value; |
1436 |
Component comp = super.getTableCellRendererComponent(table, item.getName(), isSelected, false, row, column); |
1437 |
if (comp instanceof JComponent) { |
1438 |
((JComponent)comp).setOpaque(isSelected); |
1439 |
} |
1440 |
return comp; |
1441 |
} else if (value instanceof Boolean && booleanRenderer != null) { |
1442 |
return booleanRenderer.getTableCellRendererComponent(table, value, isSelected, false, row, column); |
1443 |
|
1444 |
} else { |
1445 |
if (value instanceof JButton && jbuttonRenderer != null) { |
1446 |
return jbuttonRenderer.getTableCellRendererComponent(table, value, isSelected, false, row, column); |
1447 |
} |
1448 |
else { |
1449 |
return super.getTableCellRendererComponent(table, value, isSelected, false, row, column); |
1450 |
} |
1451 |
} |
1452 |
} |
1453 |
|
1454 |
public void setBooleanRenderer(TableCellRenderer booleanRenderer) { |
1455 |
this.booleanRenderer = booleanRenderer; |
1456 |
} |
1457 |
|
1458 |
public void setJButtonRenderer(TableCellRenderer jbuttonRenderer) { |
1459 |
this.jbuttonRenderer = jbuttonRenderer; |
1460 |
} |
1461 |
} |
1462 |
|
1463 |
private static class JTableButtonRenderer implements TableCellRenderer { |
1464 |
|
1465 |
@Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { |
1466 |
JButton button = (JButton)value; |
1467 |
if (isSelected) { |
1468 |
button.setForeground(table.getSelectionForeground()); |
1469 |
button.setBackground(table.getSelectionBackground()); |
1470 |
} else { |
1471 |
button.setForeground(table.getForeground()); |
1472 |
button.setBackground(UIManager.getColor("Button.background")); |
1473 |
} |
1474 |
return button; |
1475 |
} |
1476 |
} |
1477 |
|
1478 |
private class JTableButtonMouseListener extends MouseAdapter { |
1479 |
|
1480 |
private final JTable table; |
1316 |
|
1481 |
|
1317 |
public ComponentsLibraryItem(JsfComponentDescriptor jsfComponentsProvider) { |
1482 |
public JTableButtonMouseListener(JTable table) { |
1318 |
this.jsfComponentsProvider = jsfComponentsProvider; |
1483 |
this.table = table; |
1319 |
} |
1484 |
} |
1320 |
|
1485 |
|
1321 |
public JsfComponentDescriptor getJsfComponentDescriptor() { |
1486 |
public void mouseClicked(MouseEvent e) { |
1322 |
return jsfComponentsProvider; |
1487 |
int column = table.getColumnModel().getColumnIndexAtX(e.getX()); |
|
|
1488 |
int row = e.getY()/table.getRowHeight(); |
1489 |
|
1490 |
if (row < table.getRowCount() && row >= 0 && column < table.getColumnCount() && column >= 0) { |
1491 |
Object value = table.getValueAt(row, column); |
1492 |
if (value instanceof JButton) { |
1493 |
((JButton)value).doClick(); |
1494 |
} else if (value instanceof Boolean) { |
1495 |
panel.fireChangeEvent(); |
1496 |
} |
1497 |
} |
1498 |
} |
1499 |
} |
1500 |
|
1501 |
/** |
1502 |
* Implements a TableModel. |
1503 |
*/ |
1504 |
public static final class JSFComponentsTableModel extends AbstractTableModel { |
1505 |
|
1506 |
private static final Class<?>[] COLUMN_TYPES = new Class<?>[] {Boolean.class, JsfComponentImplementation.class, JButton.class}; |
1507 |
private DefaultListModel model; |
1508 |
private boolean inCustomizer; |
1509 |
|
1510 |
public JSFComponentsTableModel(boolean inCustomizer) { |
1511 |
model = new DefaultListModel(); |
1512 |
this.inCustomizer = inCustomizer; |
1513 |
} |
1514 |
|
1515 |
public int getColumnCount() { |
1516 |
return COLUMN_TYPES.length; |
1517 |
} |
1518 |
|
1519 |
public int getRowCount() { |
1520 |
return model.size(); |
1521 |
} |
1522 |
|
1523 |
public Class getColumnClass(int columnIndex) { |
1524 |
return COLUMN_TYPES[columnIndex]; |
1525 |
} |
1526 |
|
1527 |
public boolean isCellEditable(int rowIndex, int columnIndex) { |
1528 |
return (columnIndex == 0); |
1529 |
} |
1530 |
|
1531 |
public Object getValueAt(final int row, int column) { |
1532 |
final JSFComponentModelItem item = getItem(row); |
1533 |
switch (column) { |
1534 |
case 0: return item.isSelected(); |
1535 |
case 1: return item.getJsfComponent(); |
1536 |
case 2: |
1537 |
if (item.isClickable()) { |
1538 |
JButton button = new JButton("More..."); |
1539 |
if (!inCustomizer) { |
1540 |
button.addActionListener(new JSFComponentModelActionListener(item.getJsfComponent())); |
1541 |
} |
1542 |
return button; |
1543 |
} else { |
1544 |
return null; |
1545 |
} |
1546 |
} |
1547 |
return ""; |
1548 |
} |
1549 |
|
1550 |
public void setValueAt(Object value, int row, int column) { |
1551 |
JSFComponentModelItem item = getItem(row); |
1552 |
switch (column) { |
1553 |
case 0: item.setSelected((Boolean) value);break; |
1554 |
case 1: item.setJsfComponent((JsfComponentImplementation) value);break; |
1555 |
} |
1556 |
fireTableCellUpdated(row, column); |
1557 |
} |
1558 |
|
1559 |
private JSFComponentModelItem getItem(int index) { |
1560 |
return (JSFComponentModelItem) model.get(index); |
1561 |
} |
1562 |
|
1563 |
public void addItem(JSFComponentModelItem item){ |
1564 |
model.addElement(item); |
1565 |
} |
1566 |
|
1567 |
public void removeAllItems() { |
1568 |
if (!model.isEmpty()) { |
1569 |
model.removeAllElements(); |
1570 |
} |
1571 |
} |
1572 |
} |
1573 |
|
1574 |
private static final class JSFComponentModelActionListener implements ActionListener { |
1575 |
|
1576 |
private JsfComponentImplementation jsfDescriptor; |
1577 |
private JSFComponentWindowChangeListener listener; |
1578 |
|
1579 |
public JSFComponentModelActionListener(JsfComponentImplementation jsfDescriptor) { |
1580 |
this.jsfDescriptor = jsfDescriptor; |
1581 |
listener = new JSFComponentWindowChangeListener(); |
1582 |
} |
1583 |
|
1584 |
@Override |
1585 |
public void actionPerformed(ActionEvent e) { |
1586 |
final JsfComponentCustomizer jsfCustomizer = jsfDescriptor.getJsfComponentCustomizer(true, null); |
1587 |
jsfCustomizer.addChangeListener(listener); |
1588 |
|
1589 |
final DialogDescriptor dialogDescriptor = new DialogDescriptor( |
1590 |
jsfCustomizer.getComponent(), |
1591 |
jsfDescriptor.getName(), true, null); |
1592 |
dialogDescriptor.createNotificationLineSupport(); |
1593 |
|
1594 |
listener.setDialogDescriptor(dialogDescriptor); |
1595 |
listener.setJsfComponentExtender(jsfCustomizer); |
1596 |
|
1597 |
// OK button will save JSF extender configuration |
1598 |
ActionListener buttonsListener = new ActionListener() { |
1599 |
|
1600 |
@Override |
1601 |
public void actionPerformed(ActionEvent e) { |
1602 |
if (e.getSource().equals(DialogDescriptor.OK_OPTION)) { |
1603 |
jsfCustomizer.saveConfiguration(); |
1604 |
} |
1605 |
} |
1606 |
}; |
1607 |
dialogDescriptor.setButtonListener(buttonsListener); |
1608 |
DialogDisplayer.getDefault().notify(dialogDescriptor); |
1609 |
} |
1610 |
|
1611 |
} |
1612 |
|
1613 |
private static final class JSFComponentWindowChangeListener implements ChangeListener { |
1614 |
|
1615 |
private DialogDescriptor dialogDescriptor; |
1616 |
private JsfComponentCustomizer jsfComponentExtender; |
1617 |
|
1618 |
public void setDialogDescriptor(DialogDescriptor dialogDescriptor) { |
1619 |
this.dialogDescriptor = dialogDescriptor; |
1323 |
} |
1620 |
} |
1324 |
|
1621 |
|
1325 |
public Library getLibrary() { |
1622 |
public void setJsfComponentExtender(JsfComponentCustomizer jsfComponentExtender) { |
1326 |
return jsfComponentsProvider!= null ? jsfComponentsProvider.getLibrary() : null; |
1623 |
this.jsfComponentExtender = jsfComponentExtender; |
1327 |
} |
|
|
1328 |
|
1329 |
public String getName() { |
1330 |
return jsfComponentsProvider!= null ? jsfComponentsProvider.getName() : defaultName; |
1331 |
} |
1624 |
} |
1332 |
|
1625 |
|
1333 |
@Override |
1626 |
@Override |
1334 |
public String toString() { |
1627 |
public void stateChanged(ChangeEvent e) { |
1335 |
return getName(); |
1628 |
assert dialogDescriptor != null && jsfComponentExtender != null; |
|
|
1629 |
fireJsfDialogUpdate(jsfComponentExtender, dialogDescriptor); |
1630 |
} |
1631 |
|
1632 |
} |
1633 |
|
1634 |
private final class JSFComponentModelItem { |
1635 |
private JsfComponentImplementation component; |
1636 |
private Boolean selected; |
1637 |
|
1638 |
/** Creates a new instance of BeanFormProperty */ |
1639 |
public JSFComponentModelItem(JsfComponentImplementation component) { |
1640 |
this.setJsfComponent(component); |
1641 |
setSelected(Boolean.FALSE); |
1642 |
} |
1643 |
|
1644 |
public JsfComponentImplementation getJsfComponent() { |
1645 |
return component; |
1646 |
} |
1647 |
|
1648 |
public void setJsfComponent(JsfComponentImplementation component) { |
1649 |
this.component = component; |
1650 |
} |
1651 |
|
1652 |
public Boolean isSelected() { |
1653 |
return selected; |
1654 |
} |
1655 |
|
1656 |
public void setSelected(Boolean selected) { |
1657 |
this.selected = selected; |
1658 |
} |
1659 |
|
1660 |
public Boolean isClickable() { |
1661 |
return component.getJsfComponentCustomizer(false, null) != null; |
1336 |
} |
1662 |
} |
1337 |
} |
1663 |
} |
1338 |
} |
1664 |
} |