|
From: <jbo...@li...> - 2006-06-09 23:01:19
|
Author: szimano
Date: 2006-06-09 19:01:13 -0400 (Fri, 09 Jun 2006)
New Revision: 4716
Modified:
labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/TagMeServlet.java
labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMeClickListener.java
labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMeShowPopupListener.java
labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TaggingService.java
labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TaggingServiceAsync.java
labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/services/ShotokuTaggingService.java
labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/services/TagMeTagger.java
Log:
suggestions JBLAB-674
Modified: labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/TagMeServlet.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/TagMeServlet.java 2006-06-09 22:56:58 UTC (rev 4715)
+++ labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/TagMeServlet.java 2006-06-09 23:01:13 UTC (rev 4716)
@@ -30,20 +30,23 @@
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
-public class TagMeServlet extends RemoteServiceServlet implements TaggingService {
+public class TagMeServlet extends RemoteServiceServlet implements
+ TaggingService {
private final static Logger log = Logger.getLogger(TagMeServlet.class);
+
/**
*
*/
private static final long serialVersionUID = 1L;
-
+
public Vector getTags(String path, String clas) {
Vector vect = null;
-
+
try {
- TagMeTagger tagger = (TagMeTagger)Class.forName(clas).newInstance();
-
+ TagMeTagger tagger = (TagMeTagger) Class.forName(clas)
+ .newInstance();
+
vect = tagger.getTags(path);
} catch (InstantiationException e) {
// TODO Auto-generated catch block
@@ -55,21 +58,23 @@
// TODO Auto-generated catch block
e.printStackTrace();
}
-
+
return vect;
}
-
+
public boolean addTag(String user, String path, String clas, String tags) {
try {
- TagMeTagger tagger = (TagMeTagger)Class.forName(clas).newInstance();
-
- log.info("tags: "+ tags + "\nspliter: "+TagMeClickListener.TAG_SEP);
+ TagMeTagger tagger = (TagMeTagger) Class.forName(clas)
+ .newInstance();
+
+ log.info("tags: " + tags + "\nspliter: "
+ + TagMeClickListener.TAG_SEP);
String[] tagsTable = tags.split(TagMeClickListener.TAG_SEP);
-
+
for (int i = 0; i < tagsTable.length; i++) {
tagger.addTag(user, path, tagsTable[i]);
}
-
+
return true;
} catch (InstantiationException e) {
// TODO Auto-generated catch block
@@ -88,25 +93,48 @@
public boolean deleteTag(String user, String path, String clas, String tag) {
- try {
- TagMeTagger tagger = (TagMeTagger)Class.forName(clas).newInstance();
-
- tagger.deleteTag(user, path, tag);
-
- return true;
- } catch (InstantiationException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IllegalAccessException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (ClassNotFoundException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
-
- return false;
+ try {
+ TagMeTagger tagger = (TagMeTagger) Class.forName(clas)
+ .newInstance();
+ tagger.deleteTag(user, path, tag);
+
+ return true;
+ } catch (InstantiationException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (IllegalAccessException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (ClassNotFoundException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ return false;
+
}
+ public Vector getSugestions(String path, String clas) {
+ Vector vect = null;
+
+ try {
+ TagMeTagger tagger = (TagMeTagger) Class.forName(clas)
+ .newInstance();
+
+ vect = tagger.getSuggestions(path);
+ } catch (InstantiationException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (IllegalAccessException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (ClassNotFoundException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ return vect;
+ }
+
}
Modified: labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMeClickListener.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMeClickListener.java 2006-06-09 22:56:58 UTC (rev 4715)
+++ labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMeClickListener.java 2006-06-09 23:01:13 UTC (rev 4716)
@@ -29,6 +29,7 @@
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.rpc.ServiceDefTarget;
import com.google.gwt.user.client.ui.Button;
+import com.google.gwt.user.client.ui.CheckBox;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.TextBox;
@@ -51,15 +52,18 @@
private Button button;
private TagMeShowPopupListener parent;
+
+ private Vector suggestionCheckboxes;
public TagMeClickListener(String path, String user, String clas,
- Vector textBoxes, Label info, TagMeShowPopupListener parent) {
+ Vector textBoxes, Label info, Vector suggestionCheckboxes, TagMeShowPopupListener parent) {
this.path = path;
this.user = user;
this.textBoxes = textBoxes;
this.clas = clas;
this.info = info;
this.parent = parent;
+ this.suggestionCheckboxes = suggestionCheckboxes;
}
public void onClick(Widget sender) {
@@ -100,6 +104,18 @@
}
}
}
+
+ for (int i = 0; i < suggestionCheckboxes.size(); i++) {
+ CheckBox chBox = (CheckBox)suggestionCheckboxes.get(i);
+
+ if (chBox.isChecked()) {
+ if (tags.length() == 0) {
+ tags = chBox.getText();
+ } else {
+ tags += TAG_SEP + chBox.getText();
+ }
+ }
+ }
tagging.addTag(user, path, clas, tags, callback);
Modified: labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMeShowPopupListener.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMeShowPopupListener.java 2006-06-09 22:56:58 UTC (rev 4715)
+++ labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMeShowPopupListener.java 2006-06-09 23:01:13 UTC (rev 4716)
@@ -30,6 +30,7 @@
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.rpc.ServiceDefTarget;
import com.google.gwt.user.client.ui.Button;
+import com.google.gwt.user.client.ui.CheckBox;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.DialogBox;
import com.google.gwt.user.client.ui.FlexTable;
@@ -59,6 +60,10 @@
private Button saveBtn;
+ private FlexTable suggTable;
+
+ private Vector suggestionCheckboxes;
+
public TagMeShowPopupListener(String path, String user, String clas) {
this.path = path;
this.currentUser = user;
@@ -69,6 +74,42 @@
return this;
}
+ public void refreshSugestions() {
+ suggestionCheckboxes = new Vector();
+
+ while (suggTable.getRowCount() > 0) {
+ table.removeRow(0);
+ }
+
+ TaggingServiceAsync tagging = (TaggingServiceAsync) GWT
+ .create(TaggingService.class);
+
+ ServiceDefTarget endpoint = (ServiceDefTarget) tagging;
+ endpoint.setServiceEntryPoint("/tagme-servlet/tag/");
+
+ AsyncCallback callback = new AsyncCallback() {
+ public void onSuccess(Object result) {
+ Vector vect = (Vector)result;
+
+ int rowLen = (int)Math.sqrt(vect.size());
+
+ for (int i = 0; i < vect.size(); i++) {
+ CheckBox chBox = new CheckBox((String)vect.get(i));
+ suggTable.setWidget(i / rowLen, i % rowLen, chBox);
+ suggestionCheckboxes.add(chBox);
+ }
+ }
+
+ public void onFailure(Throwable caught) {
+ Window.alert("Error ! " + caught.getMessage() + " Throwable: "
+ + caught);
+ }
+ };
+
+ // call AJAX methos, after that callback is going to be executed
+ tagging.getSugestions(path, clas, callback);
+ }
+
public void refreshTags() {
while (table.getRowCount() > 0) {
@@ -98,10 +139,14 @@
String user = to[1];
String fullName = to[2];
String feed = to[3];
+ String authorFeed = to[4];
if (!rows.keySet().contains(user)) {
rows.put(user, new Integer(rowsNum));
- table.setHTML(rowsNum++, 0, "<b>" + fullName + "</b>");
+ table
+ .setHTML(rowsNum++, 0, "<b><a href='"
+ + authorFeed + "' target='_blank' >"
+ + fullName + "</a></b>");
}
int curRow = ((Integer) rows.get(user)).intValue();
@@ -111,8 +156,8 @@
Image im = new Image("/tagme-servlet/images/delete.gif");
HorizontalPanel hpanel = new HorizontalPanel();
- hpanel.add(new HTML("<a href='" + feed + "' target='_blank' >" + tag
- + "</a>"));
+ hpanel.add(new HTML("<a href='" + feed
+ + "' target='_blank' >" + tag + "</a>"));
hpanel.add(im);
im.addClickListener(new DeleteTagClickListener(
@@ -123,7 +168,8 @@
} else {
// just show tag
table.setHTML(curRow, table.getCellCount(curRow),
- "<a href='" + feed + "' target='_blank' >" + tag + "</a>");
+ "<a href='" + feed + "' target='_blank' >"
+ + tag + "</a>");
}
}
}
@@ -136,6 +182,9 @@
// call AJAX methos, after that callback is going to be executed
tagging.getTags(path, clas, callback);
+
+ // refresh tags also
+ refreshSugestions();
}
public void onClick(Widget sender) {
@@ -149,21 +198,36 @@
panel.add(table);
+ HorizontalPanel hPanel = new HorizontalPanel();
+ VerticalPanel input = new VerticalPanel();
+ input.add(new Label("Add a Tag:"));
+
+ hPanel.add(input);
+
+ VerticalPanel suggestions = new VerticalPanel();
+ suggTable = new FlexTable();
+ suggestions.add(new Label("Suggestions:"));
+ suggestions.add(suggTable);
+
+ hPanel.add(suggestions);
+
Vector textBoxes = new Vector();
for (int i = 0; i < 3; i++) {
TextBox box = new TextBox();
textBoxes.add(box);
- panel.add(box);
+ input.add(box);
}
+ panel.add(hPanel);
+
refreshTags();
final DialogBox dialog = new DialogBox();
HorizontalPanel btnPanel = new HorizontalPanel();
this.saveBtn = new Button("Save", new TagMeClickListener(path,
- currentUser, clas, textBoxes, info, this));
+ currentUser, clas, textBoxes, info, suggestionCheckboxes, this));
btnPanel.add(saveBtn);
btnPanel.add(new Button("Close", new ClickListener() {
Modified: labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TaggingService.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TaggingService.java 2006-06-09 22:56:58 UTC (rev 4715)
+++ labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TaggingService.java 2006-06-09 23:01:13 UTC (rev 4716)
@@ -44,4 +44,6 @@
public boolean addTag(String user, String path, String clas, String tags);
public boolean deleteTag(String user, String path, String clas, String tag);
+
+ public Vector getSugestions(String path, String clas);
}
Modified: labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TaggingServiceAsync.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TaggingServiceAsync.java 2006-06-09 22:56:58 UTC (rev 4715)
+++ labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TaggingServiceAsync.java 2006-06-09 23:01:13 UTC (rev 4716)
@@ -38,4 +38,6 @@
public void deleteTag(String user, String path, String clas, String tag,
AsyncCallback callback);
+
+ public void getSugestions(String path, String clas, AsyncCallback callback);
}
Modified: labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/services/ShotokuTaggingService.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/services/ShotokuTaggingService.java 2006-06-09 22:56:58 UTC (rev 4715)
+++ labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/services/ShotokuTaggingService.java 2006-06-09 23:01:13 UTC (rev 4716)
@@ -45,8 +45,40 @@
private TagService service = TagTools.getService();
- public String getFeedForTag(String tag, String type) {
- return service.getFeedLink(FeedType.TAGS, tag, type);
+ public Vector getSuggestions(String path) {
+ Vector<String> sugg = new Vector<String>();
+
+ try {
+ List<Tag> tags = service.getRelatedTags(service.getTags(path));
+
+ if (tags != null) {
+ for (Tag tag : tags) {
+ sugg.add(tag.getName());
+ }
+ }
+ else {
+ //test data
+ sugg.add("Tag");
+ sugg.add("Number");
+ sugg.add("One");
+ sugg.add("Poland");
+ sugg.add("Rocks");
+ sugg.add("Elephant");
+ sugg.add("Bimbom");
+ sugg.add("Tag1");
+ sugg.add("Number2");
+ sugg.add("One3");
+ sugg.add("Poland4");
+ sugg.add("Rocks5");
+ sugg.add("Elephant6");
+ sugg.add("Bimbom7");
+ }
+ } catch (TagGetException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ return sugg;
}
public Vector getTags(String path) {
@@ -65,6 +97,9 @@
+ tag.getAuthor()
+ TagMeClickListener.TAG_SEP
+ service.getFeedLink(FeedType.TAGS, tag.getName(),
+ "rss2")
+ + TagMeClickListener.TAG_SEP
+ + service.getFeedLink(FeedType.AUTHOR, tag.getAuthor(),
"rss2"));
}
Modified: labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/services/TagMeTagger.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/services/TagMeTagger.java 2006-06-09 22:56:58 UTC (rev 4715)
+++ labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/services/TagMeTagger.java 2006-06-09 23:01:13 UTC (rev 4716)
@@ -30,5 +30,5 @@
public void deleteTag(String user, String path, String tag);
- public String getFeedForTag(String tag, String type);
+ public Vector getSuggestions(String path);
}
|