diff --git a/diylc/diylc-core/src/org/diylc/plugins/cloud/model/IServiceAPI.java b/diylc/diylc-core/src/org/diylc/plugins/cloud/model/IServiceAPI.java index 43a96a76..fc91180f 100644 --- a/diylc/diylc-core/src/org/diylc/plugins/cloud/model/IServiceAPI.java +++ b/diylc/diylc-core/src/org/diylc/plugins/cloud/model/IServiceAPI.java @@ -94,7 +94,6 @@ public interface IServiceAPI { * * @param criteria * @param category - * @param format * @param page * @param itemsPerPage * @param sort @@ -102,8 +101,7 @@ public interface IServiceAPI { * objects. */ Object search(@ParamName("criteria") String criteria, @ParamName("category") String category, - @ParamName("format") String format, @ParamName("page") Integer page, - @ParamName("itemsPerPage") Integer itemsPerPage, @ParamName("sort") String sort); + @ParamName("page") Integer page, @ParamName("itemsPerPage") Integer itemsPerPage, @ParamName("sort") String sort); /** * Uploads a project using token to authenticate. diff --git a/diylc/diylc-core/src/org/diylc/plugins/cloud/model/ProjectEntity.java b/diylc/diylc-core/src/org/diylc/plugins/cloud/model/ProjectEntity.java index 4cb04037..5188f55f 100644 --- a/diylc/diylc-core/src/org/diylc/plugins/cloud/model/ProjectEntity.java +++ b/diylc/diylc-core/src/org/diylc/plugins/cloud/model/ProjectEntity.java @@ -16,26 +16,12 @@ public class ProjectEntity implements Serializable { private String downloadUrl; private int viewCount; private int downloadCount; + private int commentCount; public ProjectEntity() { super(); } - public ProjectEntity(int id, String name, String description, String owner, String category, String updated, - String thumbnailUrl, String downloadUrl, int viewCount, int downloadCount) { - super(); - this.id = id; - this.name = name; - this.description = description; - this.owner = owner; - this.category = category; - this.updated = updated; - this.thumbnailUrl = thumbnailUrl; - this.downloadUrl = downloadUrl; - this.viewCount = viewCount; - this.downloadCount = downloadCount; - } - public int getId() { return id; } @@ -114,13 +100,22 @@ public class ProjectEntity implements Serializable { public void setDownloadCount(int downloadCount) { this.downloadCount = downloadCount; - } + } + + public int getCommentCount() { + return commentCount; + } + + public void setCommentCount(int commentCount) { + this.commentCount = commentCount; + } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((category == null) ? 0 : category.hashCode()); + result = prime * result + commentCount; result = prime * result + ((description == null) ? 0 : description.hashCode()); result = prime * result + downloadCount; result = prime * result + ((downloadUrl == null) ? 0 : downloadUrl.hashCode()); @@ -147,6 +142,8 @@ public class ProjectEntity implements Serializable { return false; } else if (!category.equals(other.category)) return false; + if (commentCount != other.commentCount) + return false; if (description == null) { if (other.description != null) return false; diff --git a/diylc/diylc-core/src/org/diylc/plugins/cloud/presenter/CloudPresenter.java b/diylc/diylc-core/src/org/diylc/plugins/cloud/presenter/CloudPresenter.java index 087ccf00..cc15b33e 100644 --- a/diylc/diylc-core/src/org/diylc/plugins/cloud/presenter/CloudPresenter.java +++ b/diylc/diylc-core/src/org/diylc/plugins/cloud/presenter/CloudPresenter.java @@ -215,7 +215,7 @@ public class CloudPresenter { throws CloudException { LOG.info(String.format("search(%1$s,%2$s,%3$s,%4$d,%5$d)", criteria, category, sortOrder, pageNumber, itemsPerPage)); try { - Object res = service.search(criteria, category, "json", pageNumber, itemsPerPage, sortOrder); + Object res = service.search(criteria, category, pageNumber, itemsPerPage, sortOrder); // Thread.sleep(2000); if (res == null) throw new CloudException("Failed to retreive search results."); @@ -225,7 +225,8 @@ public class CloudPresenter { @SuppressWarnings("unchecked") List projects = (List) res; LOG.info("Received " + projects.size() + " results. Downloading thumbnails..."); - // Download thumbnails and replace urls with local paths to speed up loading in the main thread + // Download thumbnails and replace urls with local paths to speed up loading in the main + // thread for (int i = 0; i < projects.size(); i++) { String url = projects.get(i).getThumbnailUrl(); URL website = new URL(url); @@ -233,7 +234,7 @@ public class CloudPresenter { File temp = File.createTempFile("thumbnail", ".png"); FileOutputStream fos = new FileOutputStream(temp); fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); - projects.get(i).setThumbnailUrl(temp.getAbsolutePath()); + projects.get(i).setThumbnailUrl(temp.getAbsolutePath()); fos.close(); } LOG.info("Finished downloading thumbnails."); diff --git a/diylc/diylc-swing/src/org/diylc/images/IconLoader.java b/diylc/diylc-swing/src/org/diylc/images/IconLoader.java index 50a8eab8..50707f23 100644 --- a/diylc/diylc-swing/src/org/diylc/images/IconLoader.java +++ b/diylc/diylc-swing/src/org/diylc/images/IconLoader.java @@ -8,6 +8,8 @@ import javax.imageio.ImageIO; import javax.swing.Icon; import javax.swing.ImageIcon; +import com.sun.org.apache.xml.internal.serializer.utils.Messages; + /** * Loads image resources as Icons. * @@ -34,7 +36,8 @@ public enum IconLoader { "id_card_edit.png"), KeyEdit("key_edit.png"), Find("find.png"), Dashboard("dashboard.png"), DataFind( "data_find.png"), CloudDownload("cloud-download.png"), NavLeftBlue("nav_left_blue.png"), NavRightBlue( "nav_right_blue.png"), MissingImage("missing_image.png"), CloudBg("cloud_bg.png"), CloudBig("cloud_big.png"), CloudWait( - "cloud_wait.png"), Spinning("spinning.gif"), Megaphone("megaphone.png"), Download("download.png"), Eye("eye.png"); + "cloud_wait.png"), Spinning("spinning.gif"), Megaphone("megaphone.png"), Download("download.png"), Eye("eye.png"), Messages( + "messages.png"); protected String name; diff --git a/diylc/diylc-swing/src/org/diylc/images/messages.png b/diylc/diylc-swing/src/org/diylc/images/messages.png new file mode 100644 index 00000000..20f1686d Binary files /dev/null and b/diylc/diylc-swing/src/org/diylc/images/messages.png differ diff --git a/diylc/diylc-swing/src/org/diylc/images/star_grey.png b/diylc/diylc-swing/src/org/diylc/images/star_grey.png new file mode 100644 index 00000000..71b7a746 Binary files /dev/null and b/diylc/diylc-swing/src/org/diylc/images/star_grey.png differ diff --git a/diylc/diylc-swing/src/org/diylc/images/star_yellow.png b/diylc/diylc-swing/src/org/diylc/images/star_yellow.png new file mode 100644 index 00000000..542dd134 Binary files /dev/null and b/diylc/diylc-swing/src/org/diylc/images/star_yellow.png differ diff --git a/diylc/diylc-swing/src/org/diylc/swing/plugins/cloud/view/browser/ResultsScrollPanel.java b/diylc/diylc-swing/src/org/diylc/swing/plugins/cloud/view/browser/ResultsScrollPanel.java index 60a4e141..cb67636c 100644 --- a/diylc/diylc-swing/src/org/diylc/swing/plugins/cloud/view/browser/ResultsScrollPanel.java +++ b/diylc/diylc-swing/src/org/diylc/swing/plugins/cloud/view/browser/ResultsScrollPanel.java @@ -101,11 +101,11 @@ public class ResultsScrollPanel extends JScrollPane { gbc.fill = GridBagConstraints.BOTH; gbc.weightx = 100; gbc.weighty = 100; - gbc.gridwidth = 4; + gbc.gridwidth = 3; resultsPanel.add(getLoadMoreLabel(), gbc); - gbc.gridx = 2; - gbc.gridwidth = 1; + gbc.gridx = 3; + gbc.gridwidth = 2; gbc.weightx = 0; gbc.insets = new Insets(0, 0, 0, 2); gbc.fill = GridBagConstraints.NONE; @@ -179,9 +179,15 @@ public class ResultsScrollPanel extends JScrollPane { descriptionArea.setEnabled(false); // descriptionArea.setDisabledTextColor(descriptionArea.getSelectionColor()); + JLabel commentLabel = + new JLabel(Integer.toString(project.getCommentCount()), IconLoader.Messages.getIcon(), SwingConstants.LEFT); + commentLabel.setToolTipText("Click to see and add public comments"); + commentLabel.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); + JLabel viewLabel = new JLabel(Integer.toString(project.getViewCount()), IconLoader.Eye.getIcon(), SwingConstants.LEFT); viewLabel.setToolTipText("View count"); + JLabel downloadLabel = new JLabel(Integer.toString(project.getDownloadCount()), IconLoader.Download.getIcon(), SwingConstants.LEFT); downloadLabel.setToolTipText("Download count"); @@ -274,6 +280,9 @@ public class ResultsScrollPanel extends JScrollPane { gbc.gridx++; gbc.weightx = 0; + getResultsPanel().add(commentLabel, gbc); + + gbc.gridx++; getResultsPanel().add(viewLabel, gbc); gbc.gridx++; @@ -283,7 +292,7 @@ public class ResultsScrollPanel extends JScrollPane { gbc.gridx = 1; gbc.weighty = 1; gbc.weightx = 1; - gbc.gridwidth = 4; + gbc.gridwidth = 5; gbc.anchor = GridBagConstraints.NORTHWEST; gbc.fill = GridBagConstraints.BOTH; gbc.insets = new Insets(2, 6, 2, 2); @@ -297,7 +306,7 @@ public class ResultsScrollPanel extends JScrollPane { gbc.gridx++; gbc.gridheight = 3; - gbc.gridwidth = 2; + gbc.gridwidth = 3; gbc.insets = new Insets(2, 2, 2, 2); gbc.anchor = GridBagConstraints.SOUTHEAST; getResultsPanel().add(downloadButton, gbc); @@ -314,7 +323,7 @@ public class ResultsScrollPanel extends JScrollPane { gbc.gridx = 0; gbc.gridy++; - gbc.gridwidth = 5; + gbc.gridwidth = 6; gbc.fill = GridBagConstraints.HORIZONTAL; gbc.weightx = 1; gbc.insets = new Insets(2, 2, 2, 2);