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-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org