diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/Client.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/Client.java index c4a4957a3489aadd30a6038f7d32fd077bb167a4..b0ae65688c9d69a98d84416ffd98f1eb5be90867 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/Client.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/Client.java @@ -19,17 +19,6 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application; import java.util.ArrayList; import java.util.List; -import com.extjs.gxt.ui.client.mvc.Controller; -import com.extjs.gxt.ui.client.mvc.Dispatcher; -import com.google.gwt.core.client.EntryPoint; -import com.google.gwt.core.client.GWT; -import com.google.gwt.event.logical.shared.ValueChangeEvent; -import com.google.gwt.event.logical.shared.ValueChangeHandler; -import com.google.gwt.user.client.History; -import com.google.gwt.user.client.Window; -import com.google.gwt.user.client.rpc.AsyncCallback; -import com.google.gwt.user.client.rpc.ServiceDefTarget; - import ch.systemsx.cisd.common.shared.basic.utils.StringUtils; import ch.systemsx.cisd.openbis.generic.client.web.client.IClientServiceAsync; import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientService; @@ -38,6 +27,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.CommonView import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.AppController; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.AppEvents; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.LoginController; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.locator.AggregationServiceLocatorResolver; import ch.systemsx.cisd.openbis.generic.client.web.client.application.locator.AttachmentDownloadLocatorResolver; import ch.systemsx.cisd.openbis.generic.client.web.client.application.locator.BrowserLocatorResolver; import ch.systemsx.cisd.openbis.generic.client.web.client.application.locator.GlobalSearchLocatorResolver; @@ -63,6 +53,17 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.BasicConstant; import ch.systemsx.cisd.openbis.generic.shared.basic.ViewMode; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DisplaySettings; +import com.extjs.gxt.ui.client.mvc.Controller; +import com.extjs.gxt.ui.client.mvc.Dispatcher; +import com.google.gwt.core.client.EntryPoint; +import com.google.gwt.core.client.GWT; +import com.google.gwt.event.logical.shared.ValueChangeEvent; +import com.google.gwt.event.logical.shared.ValueChangeHandler; +import com.google.gwt.user.client.History; +import com.google.gwt.user.client.Window; +import com.google.gwt.user.client.rpc.AsyncCallback; +import com.google.gwt.user.client.rpc.ServiceDefTarget; + /** * The {@link EntryPoint} implementation. * @@ -441,6 +442,7 @@ public class Client implements EntryPoint, ValueChangeHandler<String> handlerRegistry.registerHandler(new GlobalSearchLocatorResolver(context)); handlerRegistry.registerHandler(new HomeLocatorResolver(context)); handlerRegistry.registerHandler(new SampleRegistrationLocatorResolver(context)); + handlerRegistry.registerHandler(new AggregationServiceLocatorResolver(context)); } @Override diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/AggregationServicePanelHelper.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/AggregationServicePanelHelper.java new file mode 100644 index 0000000000000000000000000000000000000000..b59a4f6439dbb95dcf1e9f86807283d74d928df2 --- /dev/null +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/AggregationServicePanelHelper.java @@ -0,0 +1,48 @@ +/* + * Copyright 2010 ETH Zuerich, CISD + * + * Licensed 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 ch.systemsx.cisd.openbis.generic.client.web.client.application.framework; + +import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; + +import com.extjs.gxt.ui.client.Style.LayoutRegion; +import com.extjs.gxt.ui.client.widget.Component; +import com.extjs.gxt.ui.client.widget.LayoutContainer; +import com.extjs.gxt.ui.client.widget.layout.BorderLayout; +import com.extjs.gxt.ui.client.widget.layout.BorderLayoutData; +import com.google.gwt.user.client.ui.HTML; + +/** + * Helper methods that create a panel for displaying the results of an aggregation service. This + * panel is not used directly in the openBIS UI. It is used to support implementers of web UIs and + * give them an opportunity to leverage our powerful table grid framework. + * + * @author Chandrasekhar Ramakrishnan + */ +public class AggregationServicePanelHelper +{ + public static final Component createAggregationServicePanel(IViewContext<?> viewContext, + String idPrefix) + { + final LayoutContainer layoutContainer = new LayoutContainer(new BorderLayout()); + layoutContainer.setStyleAttribute("background-color", "white"); + layoutContainer.setId(idPrefix + "aggregation_service"); + HTML content = new HTML("<p>Welcome to aggregation services</p>"); + layoutContainer.add(content, new BorderLayoutData(LayoutRegion.CENTER, 1f)); + return layoutContainer; + } + +} diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/locator/AggregationServiceLocatorResolver.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/locator/AggregationServiceLocatorResolver.java new file mode 100644 index 0000000000000000000000000000000000000000..712b1dd29db99306a65816eba2498cc56c1d3198 --- /dev/null +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/locator/AggregationServiceLocatorResolver.java @@ -0,0 +1,76 @@ +package ch.systemsx.cisd.openbis.generic.client.web.client.application.locator; + +import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.AbstractTabItemFactory; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.AggregationServicePanelHelper; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DefaultTabItem; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DispatcherHelper; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ITabItem; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.MainPagePanel; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier; +import ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException; + +/** + * An {@link IViewLocatorResolver} that shows the results of an aggregation service as a table + * model. + * + * @author Chandrasekhar Ramakrishnan + */ +public class AggregationServiceLocatorResolver extends AbstractViewLocatorResolver +{ + public final static String ACTION = "AGGREGATION_SERVICE"; + + private final IViewContext<ICommonClientServiceAsync> viewContext; + + public AggregationServiceLocatorResolver(IViewContext<ICommonClientServiceAsync> viewContext) + { + super(ACTION); + this.viewContext = viewContext; + } + + @Override + public void resolve(final ViewLocator locator) throws UserFailureException + { + DispatcherHelper.dispatchNaviEvent(new AbstractTabItemFactory() + { + + private final static String ID = GenericConstants.ID_PREFIX + ACTION; + + @Override + public ITabItem create() + { + return DefaultTabItem.createUnaware(getTabTitle(), + AggregationServicePanelHelper.createAggregationServicePanel( + viewContext, MainPagePanel.PREFIX), false, viewContext); + } + + @Override + public String getId() + { + return ID; + } + + @Override + public HelpPageIdentifier getHelpPageIdentifier() + { + return null; + } + + @Override + public String getTabTitle() + { + return viewContext.getMessage(Dict.APPLICATION_NAME); + } + + @Override + public String tryGetLink() + { + return locator.getHistoryToken(); + } + + }); + } +} \ No newline at end of file