Author: norman
Date: Wed Aug 19 07:20:48 2009
New Revision: 805688
URL: http://svn.apache.org/viewvc?rev=805688&view=rev
Log:
Support deletion of folder
Added:
labs/hupa/src/main/java/org/apache/hupa/server/handler/DeleteFolderHandler.java
labs/hupa/src/main/java/org/apache/hupa/shared/rpc/DeleteFolder.java
Modified:
labs/hupa/src/main/java/org/apache/hupa/client/HupaMessages.java
labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPFolderPresenter.java
labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPFolderView.java
labs/hupa/src/main/java/org/apache/hupa/server/guice/ServerModul.java
Modified: labs/hupa/src/main/java/org/apache/hupa/client/HupaMessages.java
URL:
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/HupaMessages.java?rev=805688&r1=805687&r2=805688&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/HupaMessages.java (original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/HupaMessages.java Wed Aug 19
07:20:48 2009
@@ -28,4 +28,8 @@
@DefaultMessage("Moving message")
public String moveMessage();
+
+ @DefaultMessage("Are you sure you want to delete the selected folder ?")
+ public String confirmDeleteFolder();
+
}
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=805688&r1=805687&r2=805688&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
Wed Aug 19 07:20:48 2009
@@ -34,6 +34,7 @@
import org.apache.hupa.client.widgets.EditEvent;
import org.apache.hupa.client.widgets.EditHandler;
+import org.apache.hupa.client.widgets.HasDialog;
import org.apache.hupa.client.widgets.HasEnable;
import org.apache.hupa.client.widgets.IMAPTreeItem;
import org.apache.hupa.shared.data.IMAPFolder;
@@ -43,6 +44,7 @@
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.DeleteFolder;
import org.apache.hupa.shared.rpc.EmptyResult;
import org.apache.hupa.shared.rpc.FetchFolders;
import org.apache.hupa.shared.rpc.FetchFoldersResult;
@@ -77,9 +79,14 @@
public HasSelectionHandlers<TreeItem> getTree();
public void bindTreeItems(List<IMAPTreeItem> treeList);
public HasClickHandlers getRenameClick();
+ public HasClickHandlers getDeleteClick();
+ public HasClickHandlers getNewClick();
+ public HasDialog getDeleteConfirmDialog();
+ public HasClickHandlers getDeleteConfirmClick();
public HasEnable getRenameEnable();
public HasEnable getDeleteEnable();
public HasEnable getNewEnable();
+ public void deleteSelectedFolder();
}
protected void loadTreeItems() {
@@ -224,8 +231,6 @@
});
-
-
display.getRenameClick().addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
@@ -234,6 +239,31 @@
});
+ display.getDeleteClick().addClickHandler(new ClickHandler() {
+
+ public void onClick(ClickEvent event) {
+ display.getDeleteConfirmDialog().show();
+ }
+
+ });
+
+ display.getDeleteConfirmClick().addClickHandler(new
ClickHandler() {
+
+ public void onClick(ClickEvent event) {
+ dispatcher.execute(new
DeleteFolder(user.getSessionId(),folder), new AsyncCallback<EmptyResult>() {
+
+ public void onFailure(Throwable caught)
{
+ GWT.log("ERROR while deleting",
caught);
+ }
+
+ public void onSuccess(EmptyResult
result) {
+ display.deleteSelectedFolder();
+ }
+
+ });
+ }
+
+ });
}
@Override
Modified: labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPFolderView.java
URL:
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPFolderView.java?rev=805688&r1=805687&r2=805688&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPFolderView.java
(original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPFolderView.java Wed
Aug 19 07:20:48 2009
@@ -25,10 +25,13 @@
import net.customware.gwt.presenter.client.EventBus;
import org.apache.hupa.client.HupaConstants;
+import org.apache.hupa.client.HupaMessages;
import org.apache.hupa.client.bundles.IMAPTreeImages;
import org.apache.hupa.client.dnd.PagingScrollTableRowDragController;
import org.apache.hupa.client.mvp.IMAPFolderPresenter.Display;
+import org.apache.hupa.client.widgets.ConfirmDialogBox;
import org.apache.hupa.client.widgets.EditableTree;
+import org.apache.hupa.client.widgets.HasDialog;
import org.apache.hupa.client.widgets.HasEnable;
import org.apache.hupa.client.widgets.IMAPTreeItem;
import org.apache.hupa.client.widgets.Loading;
@@ -42,6 +45,7 @@
import org.apache.hupa.shared.events.LogoutEvent;
import org.apache.hupa.shared.events.LogoutEventHandler;
import org.apache.hupa.shared.events.MoveMessageEvent;
+import org.cobogw.gwt.user.client.ui.RoundedPanel;
import com.allen_sauer.gwt.dnd.client.DragContext;
@@ -61,6 +65,7 @@
public class IMAPFolderView extends Composite implements Display{
private HupaConstants constants = GWT.create(HupaConstants.class);
+ private HupaMessages messages = GWT.create(HupaMessages.class);
private IMAPTreeImages tImages = GWT.create(IMAPTreeImages.class);
private EditableTree folderTree = new EditableTree(tImages,true);
private VerticalPanel folderPanel = new VerticalPanel();
@@ -69,7 +74,7 @@
private EnableHyperlink newFolderButton = new
EnableHyperlink(constants.newFolder(),"");
private EnableHyperlink renameFolderButton = new
EnableHyperlink(constants.renameFolder(),"");
private EnableHyperlink deleteFolderButton = new
EnableHyperlink(constants.deleteFolder(),"");
-
+ private ConfirmDialogBox confirmFolderDeleteBox = new
ConfirmDialogBox();
private Loading loader = new Loading(false);
private List<DropController> dropControllerList = new
ArrayList<DropController>();
private EventBus bus;
@@ -78,18 +83,27 @@
@Inject
public IMAPFolderView(EventBus bus, PagingScrollTableRowDragController
controllerProvider) {
+ this.controller = controllerProvider;
+ this.bus = bus;
+
folderTree.setAnimationEnabled(true);
folderPanel.setSpacing(5);
- folderPanel.add(folderButtonBar);
- folderPanel.add(folderTree);
+
+
folderButtonBar.setSpacing(3);
folderButtonBar.add(newFolderButton);
folderButtonBar.add(renameFolderButton);
folderButtonBar.add(deleteFolderButton);
- panel.add(loader);
+ RoundedPanel buttonPanel = new RoundedPanel(RoundedPanel.ALL,1);
+ buttonPanel.setBorder();
+ buttonPanel.add(folderButtonBar);
- this.controller = controllerProvider;
- this.bus = bus;
+ folderPanel.add(buttonPanel);
+ folderPanel.add(folderTree);
+
+ panel.add(loader);
+ confirmFolderDeleteBox.setText(messages.confirmDeleteFolder());
+
bus.addHandler(LoginEvent.TYPE,new LoginEventHandler() {
public void onLogin(LoginEvent event) {
@@ -104,6 +118,7 @@
}
});
+
initWidget(panel);
}
@@ -238,20 +253,85 @@
}
}
+ /*
+ * (non-Javadoc)
+ * @see
org.apache.hupa.client.mvp.IMAPFolderPresenter.Display#getRenameClick()
+ */
public HasClickHandlers getRenameClick() {
return renameFolderButton;
}
+ /*
+ * (non-Javadoc)
+ * @see
org.apache.hupa.client.mvp.IMAPFolderPresenter.Display#getDeleteEnable()
+ */
public HasEnable getDeleteEnable() {
return deleteFolderButton;
}
+ /*
+ * (non-Javadoc)
+ * @see
org.apache.hupa.client.mvp.IMAPFolderPresenter.Display#getNewEnable()
+ */
public HasEnable getNewEnable() {
return newFolderButton;
}
+ /*
+ * (non-Javadoc)
+ * @see
org.apache.hupa.client.mvp.IMAPFolderPresenter.Display#getRenameEnable()
+ */
public HasEnable getRenameEnable() {
return renameFolderButton;
}
+
+ /*
+ * (non-Javadoc)
+ * @see
org.apache.hupa.client.mvp.IMAPFolderPresenter.Display#getDeleteClick()
+ */
+ public HasClickHandlers getDeleteClick() {
+ return deleteFolderButton;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see
org.apache.hupa.client.mvp.IMAPFolderPresenter.Display#getNewClick()
+ */
+ public HasClickHandlers getNewClick() {
+ return newFolderButton;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see
org.apache.hupa.client.mvp.IMAPFolderPresenter.Display#getDeleteConfirmDialog()
+ */
+ public HasDialog getDeleteConfirmDialog() {
+ return confirmFolderDeleteBox;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see
org.apache.hupa.client.mvp.IMAPFolderPresenter.Display#getDeleteConfirmClick()
+ */
+ public HasClickHandlers getDeleteConfirmClick() {
+ return confirmFolderDeleteBox;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see
org.apache.hupa.client.mvp.IMAPFolderPresenter.Display#deleteSelectedFolder()
+ */
+ public void deleteSelectedFolder() {
+ folderTree.getSelectedItem().remove();
+
+ // Select the INBOX after delete folder
+ for (int i = 0; i < folderTree.getItemCount(); i++) {
+ IMAPTreeItem item = (IMAPTreeItem)
folderTree.getItem(i);
+ if (((IMAPFolder)
item.getUserObject()).getFullName().equalsIgnoreCase(IMAPFolder.DEFAULT_INBOX))
{
+ folderTree.setSelectedItem(item, true);
+ break;
+ }
+ }
+ }
}
Modified: labs/hupa/src/main/java/org/apache/hupa/server/guice/ServerModul.java
URL:
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/server/guice/ServerModul.java?rev=805688&r1=805687&r2=805688&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/server/guice/ServerModul.java
(original)
+++ labs/hupa/src/main/java/org/apache/hupa/server/guice/ServerModul.java Wed
Aug 19 07:20:48 2009
@@ -27,6 +27,7 @@
import org.apache.commons.logging.Log;
import org.apache.hupa.server.FileItemRegistry;
import org.apache.hupa.server.IMAPStoreCache;
+import org.apache.hupa.server.handler.DeleteFolderHandler;
import org.apache.hupa.server.handler.DeleteMessageHandler;
import org.apache.hupa.server.handler.ExposeMessageHandler;
import org.apache.hupa.server.handler.FetchFoldersHandler;
@@ -70,6 +71,7 @@
bindHandler(LoginSessionHandler.class);
bindHandler(MoveMessageHandler.class);
bindHandler(RenameFolderHandler.class);
+ bindHandler(DeleteFolderHandler.class);
bind(FileItemRegistry.class).in(Singleton.class);
bind(IMAPStoreCache.class).in(Singleton.class);
bind(Log.class).toProvider(LogProvider.class).in(Singleton.class);
Added:
labs/hupa/src/main/java/org/apache/hupa/server/handler/DeleteFolderHandler.java
URL:
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/server/handler/DeleteFolderHandler.java?rev=805688&view=auto
==============================================================================
---
labs/hupa/src/main/java/org/apache/hupa/server/handler/DeleteFolderHandler.java
(added)
+++
labs/hupa/src/main/java/org/apache/hupa/server/handler/DeleteFolderHandler.java
Wed Aug 19 07:20:48 2009
@@ -0,0 +1,94 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+
+package org.apache.hupa.server.handler;
+
+import javax.mail.Folder;
+import javax.servlet.http.HttpSession;
+
+import net.customware.gwt.dispatch.server.ExecutionContext;
+import net.customware.gwt.dispatch.shared.ActionException;
+
+import org.apache.commons.logging.Log;
+import org.apache.hupa.server.IMAPStoreCache;
+import org.apache.hupa.shared.data.IMAPFolder;
+import org.apache.hupa.shared.data.User;
+import org.apache.hupa.shared.rpc.DeleteFolder;
+import org.apache.hupa.shared.rpc.EmptyResult;
+
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+import com.sun.mail.imap.IMAPStore;
+
+/**
+ * Handle delete requests for a folder
+ *
+ *
+ */
+public class DeleteFolderHandler extends AbstractSessionHandler<DeleteFolder,
EmptyResult>{
+
+ @Inject
+ public DeleteFolderHandler(IMAPStoreCache cache, Log logger,
+ Provider<HttpSession> sessionProvider) {
+ super(cache, logger, sessionProvider);
+ }
+
+ @Override
+ protected EmptyResult executeInternal(DeleteFolder action,
+ ExecutionContext context) throws ActionException {
+ User user = getUser(action.getSessionId());
+ IMAPFolder folder = action.getFolder();
+ try {
+ IMAPStore store = cache.get(user);
+
+ Folder f = store.getFolder(folder.getFullName());
+
+ // close the folder if its open
+ if (f.isOpen()) {
+ f.close(false);
+ }
+
+ // recursive delete the folder
+ if (f.delete(true)) {
+ logger.info("Successfully delete folder " +
folder + " for user " + user);
+ return new EmptyResult();
+ } else {
+ throw new ActionException("Unable to delete
folder " + folder + " for user " + user);
+ }
+ } catch (Exception e) {
+ logger.error("Error while deleting folder " + folder +
" for user " + user,e);
+ throw new ActionException("Error while deleting folder
" + folder + " for user " + user,e);
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see net.customware.gwt.dispatch.server.ActionHandler#getActionType()
+ */
+ public Class<DeleteFolder> getActionType() {
+ return DeleteFolder.class;
+ }
+
+ public void rollback(DeleteFolder arg0, EmptyResult arg1,
+ ExecutionContext arg2) throws ActionException {
+ // TODO Auto-generated method stub
+
+ }
+
+}
Added: labs/hupa/src/main/java/org/apache/hupa/shared/rpc/DeleteFolder.java
URL:
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/shared/rpc/DeleteFolder.java?rev=805688&view=auto
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/shared/rpc/DeleteFolder.java (added)
+++ labs/hupa/src/main/java/org/apache/hupa/shared/rpc/DeleteFolder.java Wed
Aug 19 07:20:48 2009
@@ -0,0 +1,42 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+
+package org.apache.hupa.shared.rpc;
+
+import org.apache.hupa.shared.data.IMAPFolder;
+
+public class DeleteFolder extends Session<EmptyResult>{
+ /**
+ *
+ */
+ private static final long serialVersionUID = 7921329310932404439L;
+ private IMAPFolder folder;
+
+ public DeleteFolder(String sessionId, IMAPFolder folder) {
+ super(sessionId);
+ this.folder = folder;
+ }
+
+ protected DeleteFolder() {
+ }
+
+ public IMAPFolder getFolder() {
+ return folder;
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]