Issue #178934 - Get Sources from Kenai dialog dowsn't respect the selected kenai instance
1.1 --- a/kenai.ui/src/org/netbeans/modules/kenai/ui/GetSourcesFromKenaiPanel.form Mon Dec 21 10:24:39 2009 +0100
1.2 +++ b/kenai.ui/src/org/netbeans/modules/kenai/ui/GetSourcesFromKenaiPanel.form Tue Dec 22 08:59:20 2009 +0100
1.3 @@ -332,6 +332,9 @@
1.4 <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout"/>
1.5 </Container>
1.6 <Component class="javax.swing.JComboBox" name="kenaiCombo">
1.7 + <Events>
1.8 + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="kenaiComboActionPerformed"/>
1.9 + </Events>
1.10 <Constraints>
1.11 <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
1.12 <GridBagConstraints gridX="1" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="12" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/>
2.1 --- a/kenai.ui/src/org/netbeans/modules/kenai/ui/GetSourcesFromKenaiPanel.java Mon Dec 21 10:24:39 2009 +0100
2.2 +++ b/kenai.ui/src/org/netbeans/modules/kenai/ui/GetSourcesFromKenaiPanel.java Tue Dec 22 08:59:20 2009 +0100
2.3 @@ -62,7 +62,9 @@
2.4 import java.net.MalformedURLException;
2.5 import java.net.PasswordAuthentication;
2.6 import java.util.ArrayList;
2.7 +import java.util.HashSet;
2.8 import java.util.StringTokenizer;
2.9 +import java.util.prefs.Preferences;
2.10 import javax.swing.BorderFactory;
2.11 import javax.swing.DefaultComboBoxModel;
2.12 import javax.swing.JButton;
2.13 @@ -80,7 +82,8 @@
2.14 import org.netbeans.modules.kenai.api.KenaiService;
2.15 import org.netbeans.modules.kenai.ui.KenaiSearchPanel.KenaiProjectSearchInfo;
2.16 import org.netbeans.modules.kenai.ui.SourceAccessorImpl.ProjectAndFeature;
2.17 -import org.netbeans.modules.kenai.ui.spi.Dashboard;
2.18 +import org.netbeans.modules.kenai.ui.dashboard.DashboardImpl;
2.19 +import org.netbeans.modules.kenai.ui.spi.ProjectAccessor;
2.20 import org.netbeans.modules.kenai.ui.spi.ProjectHandle;
2.21 import org.netbeans.modules.kenai.ui.spi.UIUtils;
2.22 import org.netbeans.modules.subversion.api.Subversion;
2.23 @@ -91,9 +94,9 @@
2.24 import org.openide.filesystems.FileUtil;
2.25 import org.openide.util.Exceptions;
2.26 import org.openide.util.NbBundle;
2.27 +import org.openide.util.NbPreferences;
2.28 import org.openide.util.RequestProcessor;
2.29 import org.openide.util.WeakListeners;
2.30 -import sun.awt.image.ImageWatched.WeakLink;
2.31
2.32 /**
2.33 *
2.34 @@ -381,6 +384,12 @@
2.35 gridBagConstraints.weightx = 1.0;
2.36 gridBagConstraints.weighty = 1.0;
2.37 add(emptySpace, gridBagConstraints);
2.38 +
2.39 + kenaiCombo.addActionListener(new ActionListener() {
2.40 + public void actionPerformed(ActionEvent evt) {
2.41 + kenaiComboActionPerformed(evt);
2.42 + }
2.43 + });
2.44 gridBagConstraints = new GridBagConstraints();
2.45 gridBagConstraints.gridx = 1;
2.46 gridBagConstraints.gridy = 0;
2.47 @@ -498,17 +507,22 @@
2.48 localFolderPathEdited = true;
2.49 }//GEN-LAST:event_localFolderTextFieldKeyTyped
2.50
2.51 - private class KenaiRepositoriesComboModel extends DefaultComboBoxModel implements PropertyChangeListener {
2.52 + private void kenaiComboActionPerformed(ActionEvent evt) {//GEN-FIRST:event_kenaiComboActionPerformed
2.53 + kenai = (Kenai) kenaiCombo.getModel().getSelectedItem();
2.54 + kenaiRepoComboBox.setModel(new KenaiRepositoriesComboModel());
2.55 + refreshUsername();
2.56 + }//GEN-LAST:event_kenaiComboActionPerformed
2.57 +
2.58 + private class KenaiRepositoriesComboModel extends DefaultComboBoxModel {
2.59
2.60 public KenaiRepositoriesComboModel() {
2.61 - Dashboard.getDefault().addPropertyChangeListener(this);
2.62 addOpenedProjects();
2.63 }
2.64
2.65 private void addOpenedProjects() {
2.66 RequestProcessor.getDefault().post(new Runnable() {
2.67 public void run() {
2.68 - ProjectHandle[] openedProjects = Dashboard.getDefault().getOpenProjects();
2.69 + ProjectHandle[] openedProjects = getOpenProjects();
2.70 for (ProjectHandle prjHandle : openedProjects) {
2.71 KenaiProject kProject = null;
2.72 if (prjHandle != null) {
2.73 @@ -540,21 +554,38 @@
2.74 }
2.75 }
2.76 }
2.77 +
2.78 + private ProjectHandle[] getOpenProjects() {
2.79 + String kenaiName = kenai.getUrl().getHost();
2.80 + Preferences prefs = NbPreferences.forModule(DashboardImpl.class).node(DashboardImpl.PREF_ALL_PROJECTS + ("kenai.com".equals(kenaiName) ? "" : "-" + kenaiName)); //NOI18N
2.81 + int count = prefs.getInt(DashboardImpl.PREF_COUNT, 0); //NOI18N
2.82 + ProjectHandle[] handles = new ProjectHandle[count];
2.83 + ArrayList<String> ids = new ArrayList<String>(count);
2.84 + for (int i = 0; i < count; i++) {
2.85 + String id = prefs.get(DashboardImpl.PREF_ID + i, null); //NOI18N
2.86 + if (null != id && id.trim().length() > 0) {
2.87 + ids.add(id.trim());
2.88 + }
2.89 + }
2.90 +
2.91 + HashSet<ProjectHandle> projects = new HashSet<ProjectHandle>(ids.size());
2.92 + ProjectAccessor accessor = ProjectAccessor.getDefault();
2.93 + for (String id : ids) {
2.94 + ProjectHandle handle = accessor.getNonMemberProject(kenai, id, false);
2.95 + if (handle != null) {
2.96 + projects.add(handle);
2.97 + } else {
2.98 + //projects=null;
2.99 + }
2.100 + }
2.101 + PasswordAuthentication pa = kenai.getPasswordAuthentication();
2.102 + if (pa!=null) {
2.103 + projects.addAll(accessor.getMemberProjects(kenai, new LoginHandleImpl(pa.getUserName()), false));
2.104 + }
2.105 + return projects.toArray(handles);
2.106 + }
2.107 });
2.108 }
2.109 -
2.110 - // listening for opened projects in dashboard
2.111 - public void propertyChange(PropertyChangeEvent evt) {
2.112 - if (Dashboard.PROP_OPENED_PROJECTS.equals(evt.getPropertyName())) {
2.113 - EventQueue.invokeLater(new Runnable() {
2.114 - public void run() {
2.115 - removeAllElements();
2.116 - }
2.117 - });
2.118 - addOpenedProjects();
2.119 - }
2.120 - }
2.121 -
2.122 }
2.123
2.124 public static class KenaiFeatureListItem {
3.1 --- a/kenai.ui/src/org/netbeans/modules/kenai/ui/dashboard/DashboardImpl.java Mon Dec 21 10:24:39 2009 +0100
3.2 +++ b/kenai.ui/src/org/netbeans/modules/kenai/ui/dashboard/DashboardImpl.java Tue Dec 22 08:59:20 2009 +0100
3.3 @@ -96,9 +96,9 @@
3.4 */
3.5 public final class DashboardImpl extends Dashboard {
3.6
3.7 - private static final String PREF_ALL_PROJECTS = "allProjects"; //NOI18N
3.8 - private static final String PREF_COUNT = "count"; //NOI18N
3.9 - private static final String PREF_ID = "id"; //NOI18N
3.10 + public static final String PREF_ALL_PROJECTS = "allProjects"; //NOI18N
3.11 + public static final String PREF_COUNT = "count"; //NOI18N
3.12 + public static final String PREF_ID = "id"; //NOI18N
3.13 private LoginHandle login;
3.14 private final TreeListModel model = new TreeListModel();
3.15 private static final ListModel EMPTY_MODEL = new AbstractListModel() {