Issue #178934 - Get Sources from Kenai dialog dowsn't respect the selected kenai instance parallel_kenais
authorJan Becicka <jbecicka@netbeans.org>
Tue, 22 Dec 2009 08:59:20 +0100
branchparallel_kenais
changeset 156198b448b14e9527
parent 156197 07e3e1913373
child 156199 ffc44bd23761
Issue #178934 - Get Sources from Kenai dialog dowsn't respect the selected kenai instance
kenai.ui/src/org/netbeans/modules/kenai/ui/GetSourcesFromKenaiPanel.form
kenai.ui/src/org/netbeans/modules/kenai/ui/GetSourcesFromKenaiPanel.java
kenai.ui/src/org/netbeans/modules/kenai/ui/dashboard/DashboardImpl.java
     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() {