You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by do...@apache.org on 2013/09/12 06:36:58 UTC

svn commit: r1522370 - in /james/hupa/trunk/client/src/main/java/org/apache/hupa/client: activity/LabelListActivity.java activity/LabelPropertiesActivity.java ui/LabelListView.java ui/LabelPropertiesView.java ui/LabelPropertiesView.ui.xml

Author: dongxu
Date: Thu Sep 12 04:36:58 2013
New Revision: 1522370

URL: http://svn.apache.org/r1522370
Log:
make add of label setting work in backend

Modified:
    james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/LabelListActivity.java
    james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/LabelPropertiesActivity.java
    james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/LabelListView.java
    james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/LabelPropertiesView.java
    james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/LabelPropertiesView.ui.xml

Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/LabelListActivity.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/LabelListActivity.java?rev=1522370&r1=1522369&r2=1522370&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/LabelListActivity.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/LabelListActivity.java Thu Sep 12 04:36:58 2013
@@ -145,7 +145,10 @@ import com.google.web.bindery.requestfac
 
 public class LabelListActivity extends AppBaseActivity {
 
-	@Inject HupaController hupaController;
+	@Inject private HupaController hupaController;
+	@Inject private Displayable display;
+	@Inject private LabelPropertiesActivity.Displayable labelProperties;
+
 
 	@Override
 	public void start(AcceptsOneWidget container, EventBus eventBus) {
@@ -170,6 +173,7 @@ public class LabelListActivity extends A
 		});
 	}
 
+<<<<<<< HEAD
 	@Inject private Displayable display;
 <<<<<<< HEAD
 	
@@ -177,14 +181,18 @@ public class LabelListActivity extends A
 >>>>>>> make label settings prototype
 =======
 
+=======
+>>>>>>> make add of label setting work in backend
 	public interface Displayable extends WidgetDisplayable {
+		final int CASCADE_TYPE_ADD = 0x01;
+		final int CASCADE_TYPE_RENAME = 0x02;
 		SingleSelectionModel<LabelNode> getSelectionModel();
 		HasClickHandlers getAdd();
 		HasClickHandlers getDelete();
 	}
 
 	public void deleteSelected() {
-		hupaController.showTopLoading("Deleting");
+		hupaController.showTopLoading("Deleting...");
 		SingleSelectionModel<LabelNode> selectionModel = display.getSelectionModel();
 		LabelNode labelNode = selectionModel.getSelectedObject();
 		DeleteFolderRequest req = requestFactory.deleteFolderRequest();
@@ -203,9 +211,7 @@ public class LabelListActivity extends A
 				hupaController.hideTopLoading();
 				hupaController.showNotice(error.getMessage(), 10000);
 			}
-
 		});
-
 	}
 >>>>>>> add rename RF to label setting feature
 }

Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/LabelPropertiesActivity.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/LabelPropertiesActivity.java?rev=1522370&r1=1522369&r2=1522370&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/LabelPropertiesActivity.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/LabelPropertiesActivity.java Thu Sep 12 04:36:58 2013
@@ -24,6 +24,7 @@ import java.util.List;
 import org.apache.hupa.client.ui.LabelNode;
 import org.apache.hupa.client.ui.WidgetDisplayable;
 
+import com.google.gwt.event.dom.client.HasClickHandlers;
 import com.google.gwt.event.shared.EventBus;
 import com.google.gwt.user.client.ui.AcceptsOneWidget;
 import com.google.inject.Inject;
@@ -38,7 +39,7 @@ public class LabelPropertiesActivity ext
 	@Inject private Displayable display;
 
 	public interface Displayable extends WidgetDisplayable {
-
-		void cascade(LabelNode labelNode, List<LabelNode> list);
+		void cascade(LabelNode labelNode, List<LabelNode> list, int cascadeTypeAdd);
+		HasClickHandlers getSave();
 	}
 }

Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/LabelListView.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/LabelListView.java?rev=1522370&r1=1522369&r2=1522370&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/LabelListView.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/LabelListView.java Thu Sep 12 04:36:58 2013
@@ -197,10 +197,12 @@ import org.apache.hupa.shared.domain.Ima
 
 import com.google.gwt.cell.client.AbstractCell;
 import com.google.gwt.core.client.GWT;
+import com.google.gwt.event.dom.client.ClickEvent;
 import com.google.gwt.event.dom.client.HasClickHandlers;
 import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
 import com.google.gwt.uibinder.client.UiBinder;
 import com.google.gwt.uibinder.client.UiField;
+import com.google.gwt.uibinder.client.UiHandler;
 import com.google.gwt.user.cellview.client.CellList;
 import com.google.gwt.user.client.ui.Button;
 import com.google.gwt.user.client.ui.Composite;
@@ -216,29 +218,37 @@ import com.google.web.bindery.requestfac
 import com.google.web.bindery.requestfactory.shared.ServerFailure;
 
 public class LabelListView extends Composite implements LabelListActivity.Displayable {
-
+	
+	@Inject LabelPropertiesActivity.Displayable labelProperties;
 	@UiField SimplePanel thisView;
 
 	@UiField Button add;
 	@UiField Button delete;
 
+	@UiHandler("add")
+	public void handleAdd(ClickEvent e) {
+		labelProperties.cascade(selectionModel.getSelectedObject(), data.getDataList(), CASCADE_TYPE_ADD);
+	}
+
+	private final ImapLabelListDataProvider data;
+
 	@Inject
-	public LabelListView(HupaRequestFactory rf, final LabelPropertiesActivity.Displayable labelProperties) {
+	public LabelListView(final HupaRequestFactory rf) {
 		initWidget(binder.createAndBindUi(this));
-		final ImapLabelListDataProvider data = new ImapLabelListDataProvider(rf);
+		data = new ImapLabelListDataProvider(rf);
 		CellList<LabelNode> cellList = new CellList<LabelNode>(new LabelCell());
 		cellList.setSelectionModel(selectionModel);
 		selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
 			public void onSelectionChange(SelectionChangeEvent event) {
-				labelProperties.cascade(selectionModel.getSelectedObject(), data.getDataList());
+				labelProperties.cascade(selectionModel.getSelectedObject(), data.getDataList(), CASCADE_TYPE_RENAME);
 			}
 		});
 		data.addDataDisplay(cellList);
 		thisView.setWidget(cellList);
 	}
-	
+
 	@Override
-	public SingleSelectionModel<LabelNode> getSelectionModel(){
+	public SingleSelectionModel<LabelNode> getSelectionModel() {
 		return this.selectionModel;
 	}
 
@@ -326,9 +336,7 @@ public class LabelListView extends Compo
 				}
 
 			});
-
 		}
-
 	}
 
 <<<<<<< HEAD

Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/LabelPropertiesView.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/LabelPropertiesView.java?rev=1522370&r1=1522369&r2=1522370&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/LabelPropertiesView.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/LabelPropertiesView.java Thu Sep 12 04:36:58 2013
@@ -23,10 +23,15 @@ import java.util.List;
 
 <<<<<<< HEAD
 <<<<<<< HEAD
+<<<<<<< HEAD
 import org.apache.hupa.client.HupaController;
 import org.apache.hupa.client.activity.LabelListActivity;
 =======
 >>>>>>> make layout can be arranged by clicking the navigation buttons; make the layout changing by set their sizes to zero rather than remove/add from their parent widgets; merge to the master branch.
+=======
+import org.apache.hupa.client.HupaController;
+import org.apache.hupa.client.activity.LabelListActivity;
+>>>>>>> make add of label setting work in backend
 import org.apache.hupa.client.activity.LabelPropertiesActivity;
 import org.apache.hupa.client.rf.CreateFolderRequest;
 import org.apache.hupa.client.rf.HupaRequestFactory;
@@ -40,6 +45,7 @@ import org.apache.hupa.shared.events.Ref
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.event.dom.client.ClickEvent;
 import com.google.gwt.event.dom.client.HasClickHandlers;
+<<<<<<< HEAD
 import com.google.gwt.event.shared.EventBus;
 =======
 import org.apache.hupa.client.activity.LabelListActivity;
@@ -53,19 +59,26 @@ import org.apache.hupa.shared.domain.Ren
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.event.dom.client.ClickEvent;
 >>>>>>> add rename RF to label setting feature
+=======
+>>>>>>> make add of label setting work in backend
 import com.google.gwt.uibinder.client.UiBinder;
 import com.google.gwt.uibinder.client.UiField;
 import com.google.gwt.uibinder.client.UiHandler;
 import com.google.gwt.user.client.ui.Button;
 <<<<<<< HEAD
+<<<<<<< HEAD
 import com.google.gwt.user.client.ui.CaptionPanel;
 =======
 >>>>>>> add rename RF to label setting feature
+=======
+import com.google.gwt.user.client.ui.CaptionPanel;
+>>>>>>> make add of label setting work in backend
 import com.google.gwt.user.client.ui.Composite;
 import com.google.gwt.user.client.ui.DecoratorPanel;
 import com.google.gwt.user.client.ui.ListBox;
 import com.google.gwt.user.client.ui.TextBox;
 <<<<<<< HEAD
+<<<<<<< HEAD
 import com.google.gwt.user.client.ui.VerticalPanel;
 import com.google.inject.Inject;
 import com.google.web.bindery.requestfactory.shared.Receiver;
@@ -74,11 +87,18 @@ import com.google.web.bindery.requestfac
 import com.google.inject.Inject;
 import com.google.web.bindery.requestfactory.shared.Receiver;
 >>>>>>> add rename RF to label setting feature
+=======
+import com.google.gwt.user.client.ui.VerticalPanel;
+import com.google.inject.Inject;
+import com.google.web.bindery.requestfactory.shared.Receiver;
+import com.google.web.bindery.requestfactory.shared.ServerFailure;
+>>>>>>> make add of label setting work in backend
 
 public class LabelPropertiesView extends Composite implements LabelPropertiesActivity.Displayable {
 
 	@Inject HupaRequestFactory rf;
 <<<<<<< HEAD
+<<<<<<< HEAD
 	@Inject HupaController hc;
 	@Inject EventBus eventBus;
 
@@ -149,11 +169,23 @@ public class LabelPropertiesView extends
 	
 	@UiField TextBox _name;
 	@UiField ListBox _parent;
+=======
+	@Inject HupaController hc;
+
+	@UiField TextBox name;
+	@UiField ListBox parent;
+>>>>>>> make add of label setting work in backend
 	@UiField Button save;
 	
+	@UiField VerticalPanel propContainer;
+	@UiField CaptionPanel information;
+	
+	private int state;
+
 	ImapFolder folder;
 
 	@UiHandler("save")
+<<<<<<< HEAD
 	void handleCompose(ClickEvent e){
 		RenameFolderRequest req = rf.renameFolderRequest();
 		RenameFolderAction action = req.create(RenameFolderAction.class);
@@ -167,6 +199,49 @@ public class LabelPropertiesView extends
 			}
 		});
 >>>>>>> add rename RF to label setting feature
+=======
+	void handleSave(ClickEvent e) {
+		hc.showTopLoading("Saving...");
+		if(state == LabelListActivity.Displayable.CASCADE_TYPE_RENAME){
+			RenameFolderRequest req = rf.renameFolderRequest();
+			RenameFolderAction action = req.create(RenameFolderAction.class);
+			final ImapFolder f = req.create(ImapFolder.class);
+			f.setFullName(folder.getFullName());
+			action.setFolder(f);
+			action.setNewName(name.getText());
+			req.rename(action).fire(new Receiver<GenericResult>() {
+				@Override
+				public void onSuccess(GenericResult response) {
+					hc.hideTopLoading();
+					hc.showNotice("The label \"" + f.getFullName() + "\" has been renamed to "+name.getText(), 10000);
+				}
+				@Override
+				public void onFailure(ServerFailure error) {
+					hc.hideTopLoading();
+					hc.showNotice(error.getMessage(), 10000);
+				}
+			});	
+		} else if (state == LabelListActivity.Displayable.CASCADE_TYPE_ADD){
+			CreateFolderRequest req = rf.createFolderRequest();
+			CreateFolderAction action = req.create(CreateFolderAction.class);
+			final ImapFolder f = req.create(ImapFolder.class);
+			f.setFullName(folder.getFullName()+"/"+name.getText());
+			action.setFolder(f);
+			req.create(action).fire(new Receiver<GenericResult>(){
+				@Override
+				public void onSuccess(GenericResult response) {
+					hc.hideTopLoading();
+					hc.showNotice("The label \"" + f.getFullName() + "\" was created.", 10000);
+				}
+				@Override
+				public void onFailure(ServerFailure error) {
+					hc.hideTopLoading();
+					hc.showNotice(error.getMessage(), 10000);
+				}
+			});
+			
+		}
+>>>>>>> make add of label setting work in backend
 	}
 	public LabelPropertiesView() {
 		initWidget(binder.createAndBindUi(this));
@@ -179,24 +254,34 @@ public class LabelPropertiesView extends
 
 	@Override
 <<<<<<< HEAD
+<<<<<<< HEAD
+=======
+>>>>>>> make add of label setting work in backend
 	public void cascade(LabelNode labelNode, List<LabelNode> wholeList, int type) {
 		state = type;
 		switch (type) {
 		case LabelListActivity.Displayable.CASCADE_TYPE_ADD:
 			makeParentList(labelNode, true, wholeList);
 			name.setText("");
+<<<<<<< HEAD
 			path = labelNode.getPath();
+=======
+>>>>>>> make add of label setting work in backend
 			information.setVisible(false);
 			break;
 		case LabelListActivity.Displayable.CASCADE_TYPE_RENAME:
 			name.setText(labelNode.getName());
+<<<<<<< HEAD
 			path = labelNode.getPath();
+=======
+>>>>>>> make add of label setting work in backend
 			makeParentList(labelNode, false, wholeList);
 			information.setVisible(true);
 			break;
 		default:
 			name.setText("");
 		}
+<<<<<<< HEAD
 		folder = labelNode.getFolder();
 		if (!(labelNode.getFolder().getSubscribed())) {
 			name.setEnabled(false);
@@ -238,18 +323,32 @@ public class LabelPropertiesView extends
 =======
 	public void cascade(LabelNode labelNode, List<LabelNode> list) {
 		_name.setText(labelNode.getName());
+=======
+>>>>>>> make add of label setting work in backend
 		folder = labelNode.getFolder();
 		if (!(labelNode.getFolder().getSubscribed())) {
-			_name.setEnabled(false);
+			name.setEnabled(false);
 		} else {
-			_name.setEnabled(true);
+			name.setEnabled(true);
 		}
-		_parent.clear();
-		for (LabelNode folderNode : list) {
-			_parent.addItem(folderNode.getName(), folderNode.getPath());
+	}
+	private void makeParentList(LabelNode labelNode, boolean isParent, List<LabelNode> wholeList) {
+		parent.clear();
+		parent.addItem("---", "root");
+		for (LabelNode folderNode : wholeList) {
+			parent.addItem(folderNode.getName(), folderNode.getPath());
 		}
+<<<<<<< HEAD
 		_parent.setSelectedIndex(list.indexOf(labelNode.getParent()));
 >>>>>>> add rename RF to label setting feature
+=======
+		int parentIndex = wholeList.indexOf(isParent ? labelNode : labelNode.getParent());
+		parent.setSelectedIndex(parentIndex < 0 ? 0 : parentIndex);
+	}
+	@Override
+	public HasClickHandlers getSave() {
+		return save;
+>>>>>>> make add of label setting work in backend
 	}
 
 }

Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/LabelPropertiesView.ui.xml
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/LabelPropertiesView.ui.xml?rev=1522370&r1=1522369&r2=1522370&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/LabelPropertiesView.ui.xml (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/LabelPropertiesView.ui.xml Thu Sep 12 04:36:58 2013
@@ -61,26 +61,26 @@
 	</ui:style>
 	<g:DecoratorPanel addStyleNames="{style.propform}">
 		<g:CaptionPanel captionText="Properties">
-			<g:VerticalPanel>
+			<g:VerticalPanel ui:field="propContainer">
 				<g:CaptionPanel captionText="Location">
 					<g:VerticalPanel addStyleNames="{style.attribute}">
 						<g:HorizontalPanel addStyleNames="{style.noBorder}">
 							<g:Label>
 								<ui:msg key='folderName'>Folder Name:</ui:msg>
 							</g:Label>
-							<g:TextBox ui:field='_name' name="_name" />
+							<g:TextBox ui:field='name' name="_name" />
 						</g:HorizontalPanel>
 						<g:HorizontalPanel addStyleNames="{style.noBorder}">
 							<g:Label>
 								<ui:msg key='parentFolder'>Parent Folder:</ui:msg>
 							</g:Label>
-							<g:ListBox ui:field='_parent'>
+							<g:ListBox ui:field='parent'>
 								<g:item value="1">---</g:item>
 							</g:ListBox>
 						</g:HorizontalPanel>
 					</g:VerticalPanel>
 				</g:CaptionPanel>
-				<g:CaptionPanel captionText="Infomation">
+				<g:CaptionPanel ui:field="information" captionText="Information">
 					<g:VerticalPanel addStyleNames="{style.attribute}">
 					</g:VerticalPanel>
 				</g:CaptionPanel>



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org