Author: norman
Date: Tue Aug 18 19:51:45 2009
New Revision: 805553
URL: http://svn.apache.org/viewvc?rev=805553&view=rev
Log:
Renaming Folders is working now!
Modified:
labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPFolderPresenter.java
labs/hupa/src/main/java/org/apache/hupa/client/widgets/EditableTreeItem.java
labs/hupa/src/main/java/org/apache/hupa/client/widgets/IMAPTreeItem.java
Modified:
labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPFolderPresenter.java
URL:
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPFolderPresenter.java?rev=805553&r1=805552&r2=805553&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPFolderPresenter.java
(original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPFolderPresenter.java
Tue Aug 18 19:51:45 2009
@@ -32,6 +32,8 @@
import net.customware.gwt.presenter.client.widget.WidgetDisplay;
import net.customware.gwt.presenter.client.widget.WidgetPresenter;
+import org.apache.hupa.client.widgets.EditEvent;
+import org.apache.hupa.client.widgets.EditHandler;
import org.apache.hupa.client.widgets.IMAPTreeItem;
import org.apache.hupa.shared.data.IMAPFolder;
import org.apache.hupa.shared.data.User;
@@ -40,8 +42,10 @@
import org.apache.hupa.shared.events.LoadMessagesEvent;
import org.apache.hupa.shared.events.LoginEvent;
import org.apache.hupa.shared.events.LoginEventHandler;
+import org.apache.hupa.shared.rpc.EmptyResult;
import org.apache.hupa.shared.rpc.FetchFolders;
import org.apache.hupa.shared.rpc.FetchFoldersResult;
+import org.apache.hupa.shared.rpc.RenameFolder;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
@@ -50,6 +54,7 @@
import com.google.gwt.event.logical.shared.HasSelectionHandlers;
import com.google.gwt.event.logical.shared.SelectionEvent;
import com.google.gwt.event.logical.shared.SelectionHandler;
+import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.TreeItem;
import com.google.inject.Inject;
@@ -103,8 +108,31 @@
for (int i = 0; i < list.size(); i++) {
IMAPFolder iFolder = list.get(i);
- IMAPTreeItem record = new IMAPTreeItem(iFolder);
-
+ final IMAPTreeItem record = new IMAPTreeItem(iFolder);
+ record.addEditHandler(new EditHandler() {
+
+ public void onEditEvent(EditEvent event) {
+
if(event.getEventType().equals(EditEvent.EventType.Stop)) {
+ IMAPFolder iFolder = new
IMAPFolder((String)event.getOldValue());
+ final String newName =
(String)event.getNewValue();
+ if
(iFolder.getFullName().equalsIgnoreCase(newName) == false) {
+ dispatcher.execute(new
RenameFolder(user.getSessionId(), iFolder, newName), new
AsyncCallback<EmptyResult>() {
+
+ public void
onFailure(Throwable caught) {
+
record.cancelEdit();
+ }
+
+ public void
onSuccess(EmptyResult result) {
+
folder.setFullName(newName);
+ }
+
+ });
+ }
+
+ }
+ }
+
+ });
record.setUserObject(iFolder);
List<IMAPFolder> childFolders =
iFolder.getChildIMAPFolders();
Modified:
labs/hupa/src/main/java/org/apache/hupa/client/widgets/EditableTreeItem.java
URL:
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/widgets/EditableTreeItem.java?rev=805553&r1=805552&r2=805553&view=diff
==============================================================================
---
labs/hupa/src/main/java/org/apache/hupa/client/widgets/EditableTreeItem.java
(original)
+++
labs/hupa/src/main/java/org/apache/hupa/client/widgets/EditableTreeItem.java
Tue Aug 18 19:51:45 2009
@@ -26,19 +26,18 @@
import com.google.gwt.event.dom.client.KeyDownHandler;
import com.google.gwt.event.shared.HandlerManager;
import com.google.gwt.event.shared.HandlerRegistration;
+import com.google.gwt.user.client.ui.HasText;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.TreeItem;
import com.google.gwt.user.client.ui.Widget;
public class EditableTreeItem extends TreeItem implements
HasEditable,HasEditHandlers{
- protected boolean isEdit = false;
protected TextBox editBox = new TextBox();
- protected Label item = new Label();;
- protected String itemText;
- HandlerManager manager = new HandlerManager(this);
+ protected String oldValue;
+ private Widget normalItem = new Label();
+ protected HandlerManager manager = new HandlerManager(this);
public EditableTreeItem() {
- setWidget(item);
editBox.setWidth("100px");
editBox.addKeyDownHandler(new KeyDownHandler() {
@@ -68,20 +67,23 @@
}
});
+ super.setWidget(normalItem);
}
+
+
@Override
public void setText(String text) {
- item.setText(text);
- itemText = text;
+ setWidget(new Label(text));
}
+
@Override
public void setWidget(Widget newWidget) {
- if (newWidget instanceof Label) {
- item = (Label)newWidget;
+ if (newWidget instanceof HasText) {
+ normalItem = newWidget;
super.setWidget(newWidget);
} else {
- throw new IllegalArgumentException("Widget need to
extend Label");
+ throw new IllegalArgumentException("Widget need to
implement HasText");
}
}
@@ -90,26 +92,15 @@
* @see org.apache.hupa.client.widgets.HasEditable#cancelEdit()
*/
public void cancelEdit() {
- cancelEdit(itemText);
+ showItem(oldValue);
+ manager.fireEvent(new
EditEvent(EditEvent.EventType.Start,oldValue,null));
}
-
- /**
- * Cancel the edit and set the text of the TreeItem to the given value
- *
- * @param text
- */
- protected void cancelEdit(String text) {
- setWidget(item);
- item.setText(text);
- isEdit = false;
- }
-
/*
* (non-Javadoc)
* @see org.apache.hupa.client.widgets.HasEditable#isEdit()
*/
public boolean isEdit() {
- return isEdit;
+ return getWidget().equals(editBox);
}
/*
@@ -117,51 +108,36 @@
* @see org.apache.hupa.client.widgets.HasEditable#startEdit()
*/
public void startEdit() {
- editBox.setText(item.getText());
- editBox.setFocus(true);
- editBox.setCursorPos(item.getText().length());
- super.setWidget(editBox);
- isEdit = true;
+ oldValue = getText();
+ showEditBox(oldValue);
+ manager.fireEvent(new
EditEvent(EditEvent.EventType.Start,oldValue,null));
}
- /**
- * Start editing the TreeItem.
- *
- * @param startValue
- */
- protected void startEdit(String startValue) {
- itemText = startValue;
- editBox.setText(startValue);
- editBox.setCursorPos(startValue.length());
- super.setWidget(editBox);
- isEdit = true;
+ protected void showEditBox(String value) {
+ editBox.setText(value);
+ editBox.setCursorPos(value.length());
editBox.setFocus(true);
+ super.setWidget(editBox);
}
+
/*
* (non-Javadoc)
* @see org.apache.hupa.client.widgets.HasEditable#stopEdit()
*/
public void stopEdit() {
- stopEdit(editBox.getText().trim());
- }
-
- /**
- * Stop edit and set the text of the TreeItem to the given value
- *
- * @param newValue
- */
- protected void stopEdit(String newValue) {
- item.setText(newValue);
- setWidget(item);
- editBox.setText("");
- isEdit = false;
+ showItem(editBox.getText());
+ manager.fireEvent(new
EditEvent(EditEvent.EventType.Stop,oldValue,editBox.getText()));
}
+ public void showItem(String text) {
+ ((HasText)normalItem).setText(text);
+ setWidget(normalItem);
+ }
@Override
public String getText() {
- return item.getText();
+ return ((HasText)normalItem).getText();
}
public HandlerRegistration addEditHandler(EditHandler handler) {
Modified:
labs/hupa/src/main/java/org/apache/hupa/client/widgets/IMAPTreeItem.java
URL:
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/widgets/IMAPTreeItem.java?rev=805553&r1=805552&r2=805553&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/widgets/IMAPTreeItem.java
(original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/widgets/IMAPTreeItem.java
Tue Aug 18 19:51:45 2009
@@ -22,10 +22,12 @@
import org.apache.hupa.shared.data.IMAPFolder;
public class IMAPTreeItem extends EditableTreeItem {
+ private String oldFullName;
+ private String oldName;
+
public IMAPTreeItem(IMAPFolder folder) {
setUserObject(folder);
- setFolderText(folder);
-
+ setFolderText(folder);
}
/*
@@ -110,14 +112,30 @@
@Override
public void startEdit() {
- startEdit(((IMAPFolder)getUserObject()).getName());
+ IMAPFolder folder = (IMAPFolder) getUserObject();
+ oldFullName = folder.getFullName();
+ oldName = folder.getName();
+ showEditBox(oldName);
+ manager.fireEvent(new
EditEvent(EditEvent.EventType.Start,oldFullName,null));
}
- public void stopEdit() {
- stopEdit(editBox.getText().trim() + " (" + ((IMAPFolder)
getUserObject()).getUnseeMessageCount() +")");
+ public void cancelEdit() {
+ IMAPFolder folder = ((IMAPFolder) getUserObject());
+ folder.setFullName(oldFullName);
+ showItem(getFolderName(folder));
+
+ manager.fireEvent(new
EditEvent(EditEvent.EventType.Cancel,oldFullName,null));
+
}
- public void cancelEdit() {
- cancelEdit(getFolderName((IMAPFolder)getUserObject()));
+ public void stopEdit() {
+ String newFolderName = editBox.getText();
+ String newFullFolderName = oldFullName.substring(0,
oldFullName.length() - oldName.length()) + newFolderName;
+ IMAPFolder folder = ((IMAPFolder) getUserObject());
+ folder.setFullName(newFullFolderName);
+ showItem(getFolderName(folder));
+
+ manager.fireEvent(new
EditEvent(EditEvent.EventType.Stop,oldFullName,newFullFolderName));
+
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]