Author: dongxu Date: Thu Sep 12 03:59:31 2013 New Revision: 1522281 URL: http://svn.apache.org/r1522281 Log: use GinFactoryModuleBuilder to inject multiple displayable instances of some activities
Added: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ioc/FolderListFactory.java james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/ActivityManagerInitializer.java~HEAD - copied, changed from r1522280, james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/ActivityManagerInitializer.java Removed: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaActivityManagerInitializer.java Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaController.java james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/FolderListActivity.java james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ioc/AppGinModule.java james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/ActivityManagerInitializer.java james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/FolderListActivityMapper.java james/hupa/trunk/client/src/main/java/org/apache/hupa/client/place/MailFolderPlace.java james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/FolderListView.java james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListView.java Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaController.java URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaController.java?rev=1522281&r1=1522280&r2=1522281&view=diff ============================================================================== --- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaController.java (original) +++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaController.java Thu Sep 12 03:59:31 2013 @@ -23,6 +23,7 @@ package org.apache.hupa.client; <<<<<<< HEAD <<<<<<< HEAD <<<<<<< HEAD +<<<<<<< HEAD import org.apache.hupa.client.activity.NotificationActivity; import org.apache.hupa.client.activity.ToolBarActivity; import org.apache.hupa.client.activity.TopBarActivity; @@ -32,6 +33,9 @@ import org.apache.hupa.client.place.Cont import org.apache.hupa.client.place.FolderPlace; import org.apache.hupa.client.place.HupaPlace; import org.apache.hupa.client.place.SettingPlace; +======= +import org.apache.hupa.client.mapper.ActivityManagerInitializer; +>>>>>>> use GinFactoryModuleBuilder to inject multiple displayable instances of some activities import org.apache.hupa.client.rf.CheckSessionRequest; import org.apache.hupa.client.rf.HupaRequestFactory; import org.apache.hupa.client.rf.IdleRequest; @@ -117,8 +121,12 @@ public class HupaController { >>>>>>> move new theme ui from experiment to hupa evo ======= public HupaController(EventBus eventBus, +<<<<<<< HEAD HupaActivityManagerInitializer initializeActivityManagerByGin) { >>>>>>> make login page as one part of the overall layout & splite layout to >>>>>>> little one +======= + ActivityManagerInitializer initializeActivityManagerByGin) { +>>>>>>> use GinFactoryModuleBuilder to inject multiple displayable instances of some activities eventBus.addHandler(PlaceChangeEvent.TYPE, new PlaceChangHandler()); } Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/FolderListActivity.java URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/FolderListActivity.java?rev=1522281&r1=1522280&r2=1522281&view=diff ============================================================================== --- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/FolderListActivity.java (original) +++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/FolderListActivity.java Thu Sep 12 03:59:31 2013 @@ -20,6 +20,7 @@ package org.apache.hupa.client.activity; <<<<<<< HEAD +<<<<<<< HEAD import org.apache.hupa.shared.events.RefreshUnreadEvent; import org.apache.hupa.shared.events.RefreshUnreadEventHandler; @@ -27,9 +28,13 @@ import com.google.gwt.event.shared.Event import com.google.gwt.user.client.ui.AcceptsOneWidget; import com.google.gwt.user.client.ui.IsWidget; ======= +======= +import org.apache.hupa.client.ioc.FolderListFactory; +>>>>>>> use GinFactoryModuleBuilder to inject multiple displayable instances of some activities import org.apache.hupa.client.ui.WidgetDisplayable; import com.google.gwt.event.shared.EventBus; +import com.google.gwt.place.shared.Place; import com.google.gwt.user.client.ui.AcceptsOneWidget; >>>>>>> integrate all of the views to their corresponding activities and >>>>>>> mappers import com.google.inject.Inject; @@ -38,10 +43,19 @@ public class FolderListActivity extends <<<<<<< HEAD <<<<<<< HEAD +<<<<<<< HEAD @Inject private Displayable display; +======= + @Inject private FolderListFactory folderListFactory; + private Place place; + private Displayable display; +>>>>>>> use GinFactoryModuleBuilder to inject multiple displayable instances of some activities @Override public void start(AcceptsOneWidget container, EventBus eventBus) { + if (display == null) { + display = folderListFactory.create(place); + } container.setWidget(display.asWidget()); bindTo(eventBus); } @@ -56,6 +70,7 @@ public class FolderListActivity extends }); } +<<<<<<< HEAD public interface Displayable extends IsWidget { void refresh(); } @@ -75,6 +90,16 @@ public class FolderListActivity extends public interface Displayable extends WidgetDisplayable {} >>>>>>> integrate all of the views to their corresponding activities and >>>>>>> mappers ======= +======= + public FolderListActivity with(Place place) { + if (display == null || !place.getClass().equals(this.place.getClass())) { + display = folderListFactory.create(place); + this.place = place; + } + return this; + } + +>>>>>>> use GinFactoryModuleBuilder to inject multiple displayable instances of some activities public interface Displayable extends WidgetDisplayable { } >>>>>>> make reload mail folder place work, fixed issue #7 Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ioc/AppGinModule.java URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ioc/AppGinModule.java?rev=1522281&r1=1522280&r2=1522281&view=diff ============================================================================== --- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ioc/AppGinModule.java (original) +++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ioc/AppGinModule.java Thu Sep 12 03:59:31 2013 @@ -249,6 +249,7 @@ import com.google.gwt.core.client.GWT; import com.google.gwt.event.shared.EventBus; import com.google.gwt.event.shared.SimpleEventBus; import com.google.gwt.inject.client.AbstractGinModule; +import com.google.gwt.inject.client.assistedinject.GinFactoryModuleBuilder; import com.google.gwt.place.shared.PlaceController; import com.google.gwt.place.shared.PlaceHistoryHandler; import com.google.gwt.place.shared.PlaceHistoryMapper; @@ -265,6 +266,7 @@ import com.google.gwt.user.cellview.clie >>>>>>> refactoring. import com.google.inject.Provides; import com.google.inject.Singleton; +import com.google.inject.assistedinject.FactoryModuleBuilder; import com.google.inject.name.Named; <<<<<<< HEAD @@ -473,12 +475,14 @@ public class AppGinModule extends Abstra bind(LogoActivity.Displayable.class).to(LogoView.class); bind(NavigationActivity.Displayable.class).to(NavigationView.class); bind(ToolBarActivity.Displayable.class).to(ToolBarView.class); - bind(FolderListActivity.Displayable.class).to(FolderListView.class); +// bind(FolderListActivity.Displayable.class).to(FolderListView.class); bind(MessageListActivity.Displayable.class).to(MessageListView.class); - bind(MessageListFooterActivity.Displayable.class).to(MessageListFooterView.class); - bind(MessageContentActivity.Displayable.class).to(MessageContentView.class); + bind(MessageListFooterActivity.Displayable.class).to( + MessageListFooterView.class); + bind(MessageContentActivity.Displayable.class).to( + MessageContentView.class); bind(StatusActivity.Displayable.class).to(StatusView.class); - + bind(LoginActivity.class).in(Singleton.class); bind(TopBarActivity.class).in(Singleton.class); bind(LogoActivity.class).in(Singleton.class); @@ -486,11 +490,9 @@ public class AppGinModule extends Abstra bind(ToolBarActivity.class).in(Singleton.class); bind(FolderListActivity.class).in(Singleton.class); bind(MessageListActivity.class).in(Singleton.class); -// bind(MessageListFooterActivity.class).in(Singleton.class); -// bind(MessageContentActivity.class).in(Singleton.class); -// bind(StatusActivity.class).in(Singleton.class); - - + // bind(MessageListFooterActivity.class).in(Singleton.class); + // bind(MessageContentActivity.class).in(Singleton.class); + // bind(StatusActivity.class).in(Singleton.class); >>>>>>> integrate all of the views to their corresponding activities and >>>>>>> mappers bind(TopActivity.Displayable.class).to(TopView.class); @@ -575,6 +577,9 @@ public class AppGinModule extends Abstra bind(HupaController.class).in(Singleton.class); >>>>>>> move new theme ui from experiment to hupa evo + install(new GinFactoryModuleBuilder().implement( + FolderListActivity.Displayable.class, FolderListView.class) + .build(FolderListFactory.class)); // bind(ExceptionHandler.class).to(DefaultExceptionHandler.class); } <<<<<<< HEAD @@ -680,6 +685,7 @@ public class AppGinModule extends Abstra return new ActivityManager(activityMapper, eventBus); } <<<<<<< HEAD +<<<<<<< HEAD >>>>>>> integrate all of the views to their corresponding activities and >>>>>>> mappers ======= @@ -828,6 +834,11 @@ public class AppGinModule extends Abstra >>>>>>> track the folder list tree model issue of invalid session, TODO how to >>>>>>> retrieve folders data using GIN @Provides @Singleton +======= + + @Provides + @Singleton +>>>>>>> use GinFactoryModuleBuilder to inject multiple displayable instances of some activities public PlaceController getPlaceController(EventBus eventBus) { return new PlaceController(eventBus); } Added: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ioc/FolderListFactory.java URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ioc/FolderListFactory.java?rev=1522281&view=auto ============================================================================== --- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ioc/FolderListFactory.java (added) +++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ioc/FolderListFactory.java Thu Sep 12 03:59:31 2013 @@ -0,0 +1,28 @@ +/**************************************************************** + * 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.client.ioc; + +import org.apache.hupa.client.activity.FolderListActivity; + +import com.google.gwt.place.shared.Place; + +public interface FolderListFactory { + FolderListActivity.Displayable create(Place place); +} Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/ActivityManagerInitializer.java URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/ActivityManagerInitializer.java?rev=1522281&r1=1522280&r2=1522281&view=diff ============================================================================== --- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/ActivityManagerInitializer.java (original) +++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/ActivityManagerInitializer.java Thu Sep 12 03:59:31 2013 @@ -33,36 +33,21 @@ import com.google.inject.name.Named; public class ActivityManagerInitializer { @Inject - public ActivityManagerInitializer(LoginLayoutable loginLayout, HupaLayoutable hupaLayout, - - @Named("ContactsListRegion") ActivityManager contactsListActivityManager, - @Named("ContactPropertiesRegion") ActivityManager contactPropertiesActivityManager, - @Named("LabelListRegion") ActivityManager labelListActivityManager, - @Named("SettingNavRegion") ActivityManager settingNavActivityManager, - @Named("LabelPropertiesRegion") ActivityManager labelPropertiesActivityManager, + public ActivityManagerInitializer(LoginLayoutable loginLayout, + HupaLayoutable hupaLayout, @Named("LoginPage") ActivityManager loginActivityManager, @Named("TopBarRegion") ActivityManager topBarActivityManager, @Named("LogoRegion") ActivityManager logoActivityManager, - @Named("NotificationRegion") ActivityManager notificationActivityManager, @Named("NavigationRegion") ActivityManager navigationActivityManager, @Named("ToolBarRegion") ActivityManager toolBarActivityManager, @Named("FolderListRegion") ActivityManager folderListActivityManager, @Named("MessageListRegion") ActivityManager messageListActivityManager, @Named("MessageListFooterRegion") ActivityManager messageListFooterActivityManager, @Named("MessageContentRegion") ActivityManager messageContentActivityManager, - @Named("StatusRegion") ActivityManager statusActivityManager, - @Named("ComposeToolBarRegion") ActivityManager composeToolBarActivityManager, - @Named("SearchBoxRegion") ActivityManager searchBoxActivityManager, - @Named("ComposeRegion") ActivityManager composeActivityManager) { - contactsListActivityManager.setDisplay(hupaLayout.getContactsListView()); - contactPropertiesActivityManager.setDisplay(hupaLayout.getContactPropertiesView()); - labelPropertiesActivityManager.setDisplay(hupaLayout.getLabelPropertiesView()); - labelListActivityManager.setDisplay(hupaLayout.getLabelListView()); - settingNavActivityManager.setDisplay(hupaLayout.getSettingNavView()); + @Named("StatusRegion") ActivityManager statusActivityManager) { loginActivityManager.setDisplay(loginLayout.getLoginView()); topBarActivityManager.setDisplay(hupaLayout.getTopBarView()); logoActivityManager.setDisplay(hupaLayout.getLogoView()); - notificationActivityManager.setDisplay(hupaLayout.getNotificationView()); navigationActivityManager.setDisplay(hupaLayout.getNavigationView()); toolBarActivityManager.setDisplay(hupaLayout.getToolBarView()); folderListActivityManager.setDisplay(hupaLayout.getFolderListView()); @@ -70,9 +55,6 @@ public class ActivityManagerInitializer messageListFooterActivityManager.setDisplay(hupaLayout.getMessageListFooterView()); messageContentActivityManager.setDisplay(hupaLayout.getMessageContentView()); statusActivityManager.setDisplay(hupaLayout.getStatusView()); - composeToolBarActivityManager.setDisplay(hupaLayout.getComposeToolBarView()); - searchBoxActivityManager.setDisplay(hupaLayout.getSearchBoxView()); - composeActivityManager.setDisplay(hupaLayout.getComposeView()); } } Copied: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/ActivityManagerInitializer.java~HEAD (from r1522280, james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/ActivityManagerInitializer.java) URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/ActivityManagerInitializer.java%7EHEAD?p2=james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/ActivityManagerInitializer.java%7EHEAD&p1=james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/ActivityManagerInitializer.java&r1=1522280&r2=1522281&rev=1522281&view=diff ============================================================================== (empty) Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/FolderListActivityMapper.java URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/FolderListActivityMapper.java?rev=1522281&r1=1522280&r2=1522281&view=diff ============================================================================== --- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/FolderListActivityMapper.java (original) +++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/FolderListActivityMapper.java Thu Sep 12 03:59:31 2013 @@ -54,7 +54,7 @@ public class FolderListActivityMapper ex public class FolderListActivityMapper implements ActivityMapper { >>>>>>> integrate all of the views to their corresponding activities and >>>>>>> mappers private final Provider<FolderListActivity> folderListActivityProvider; - + @Inject public FolderListActivityMapper( Provider<FolderListActivity> folderListActivityProvider) { @@ -62,6 +62,7 @@ public class FolderListActivityMapper im } <<<<<<< HEAD +<<<<<<< HEAD @Override Activity asyncLoadActivity(final Place place) { if (place instanceof SettingPlace) @@ -86,6 +87,9 @@ public class FolderListActivityMapper im return folderListActivityProvider.get(); >>>>>>> integrate all of the views to their corresponding activities and >>>>>>> mappers ======= +======= + public Activity getActivity(final Place place) { +>>>>>>> use GinFactoryModuleBuilder to inject multiple displayable instances of some activities if (place instanceof MailFolderPlace) { return new ActivityAsyncProxy() { @Override @@ -95,7 +99,7 @@ public class FolderListActivityMapper im @Override protected Activity createInstance() { - return folderListActivityProvider.get(); + return folderListActivityProvider.get().with(place); } }; Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/place/MailFolderPlace.java URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/place/MailFolderPlace.java?rev=1522281&r1=1522280&r2=1522281&view=diff ============================================================================== --- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/place/MailFolderPlace.java (original) +++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/place/MailFolderPlace.java Thu Sep 12 03:59:31 2013 @@ -30,7 +30,8 @@ public class MailFolderPlace extends Abs /** * Folder places look like: #Mock-Inbox, #INBOX,<br> - * while message places: #Mock-Inbox/10, #INBOX/1234, #%5BGmail%5DDrafts/18 + * while message places: #Mock-Inbox/10, #INBOX/1234, + * #%5BGmail%5DDrafts/18 * * @param token */ @@ -86,4 +87,29 @@ public class MailFolderPlace extends Abs return token.toString(); } } + + @Override + public boolean equals(Object o) { + if (o == null) + return false; + if (o == this) + return true; + if (o.getClass() != getClass()) + return false; + MailFolderPlace place = (MailFolderPlace) o; + return (fullName == place.fullName || (fullName != null && fullName + .equals(place.getFullName()))) + && (uid == place.uid || (uid != null && uid.equals(place + .getUid()))); + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + + ((fullName == null) ? 0 : fullName.hashCode()); + result = prime * result + ((uid == null) ? 0 : uid.hashCode()); + return result; + } } Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/FolderListView.java URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/FolderListView.java?rev=1522281&r1=1522280&r2=1522281&view=diff ============================================================================== --- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/FolderListView.java (original) +++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/FolderListView.java Thu Sep 12 03:59:31 2013 @@ -210,28 +210,37 @@ public class FolderListView extends Comp ======= ======= import org.apache.hupa.client.activity.FolderListActivity; +import org.apache.hupa.client.place.MailFolderPlace; >>>>>>> integrate all of the views to their corresponding activities and >>>>>>> mappers import com.google.gwt.core.client.GWT; import com.google.gwt.event.shared.EventBus; +import com.google.gwt.place.shared.Place; import com.google.gwt.resources.client.ImageResource; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.cellview.client.CellTree; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.SimplePanel; -import com.google.inject.Inject; +import com.google.inject.assistedinject.Assisted; +import com.google.inject.assistedinject.AssistedInject; public class FolderListView extends Composite implements FolderListActivity.Displayable { @UiField(provided = true) CellTree cellTree; - @Inject + @AssistedInject public FolderListView(final FoldersTreeViewModel viewModel, - final EventBus eventBus) { - cellTree = new CellTree(viewModel, null, Resources.INSTANCE); - cellTree.setAnimationEnabled(true); + final EventBus eventBus, @Assisted Place place) { + System.out.println(place); + if (place instanceof MailFolderPlace) { + cellTree = new CellTree(viewModel, null, Resources.INSTANCE); + cellTree.setAnimationEnabled(true); + } else { + cellTree = new CellTree(viewModel, null); + cellTree.setAnimationEnabled(true); + } initWidget(binder.createAndBindUi(this)); >>>>>>> make login page as one part of the overall layout & splite layout to >>>>>>> little one } Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListView.java URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListView.java?rev=1522281&r1=1522280&r2=1522281&view=diff ============================================================================== --- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListView.java (original) +++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListView.java Thu Sep 12 03:59:31 2013 @@ -232,6 +232,7 @@ public class MessageListView extends Com @Override public void onFailure(ServerFailure error) { if (error.isFatal()) { + //FIXME should goto login page regarding the long time session expired. throw new RuntimeException(error.getMessage()); } } --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org