diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/MatchingEntitiesPanel.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/MatchingEntitiesPanel.java index 5eb3fce17305636fb8a77cfece074c589566736f..b1775852a4a07a56709f4f49b97a288de6632d56 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/MatchingEntitiesPanel.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/MatchingEntitiesPanel.java @@ -29,9 +29,9 @@ import com.extjs.gxt.ui.client.widget.LayoutContainer; import com.extjs.gxt.ui.client.widget.button.Button; import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.AbstractTabItemFactory; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DispatcherHelper; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DisplayTypeIDGenerator; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ITabItemFactory; import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.BaseEntityModel; import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.MatchingEntityModel; import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.MatchingEntityModel.MatchingEntityColumnKind; @@ -95,9 +95,9 @@ final class MatchingEntitiesPanel extends AbstractBrowserGrid<MatchingEntity, Ma registerLinkClickListenerFor(MatchingEntityColumnKind.IDENTIFIER.id(), new ICellListener<MatchingEntity>() { - public void handle(MatchingEntity rowItem) + public void handle(MatchingEntity rowItem, boolean keyPressed) { - showEntityViewer(rowItem, false); + showEntityViewer(rowItem, false, keyPressed); } }); extendBottomToolbar(); @@ -149,7 +149,7 @@ final class MatchingEntitiesPanel extends AbstractBrowserGrid<MatchingEntity, Ma } @Override - protected void showEntityViewer(MatchingEntity matchingEntity, boolean editMode) + protected void showEntityViewer(MatchingEntity matchingEntity, boolean editMode, boolean inBackground) { final EntityKind entityKind = matchingEntity.getEntityKind(); BasicEntityType entityType = matchingEntity.getEntityType(); @@ -158,8 +158,9 @@ final class MatchingEntitiesPanel extends AbstractBrowserGrid<MatchingEntity, Ma entityType); final IClientPlugin<BasicEntityType, IIdentifiable> createClientPlugin = clientPluginFactory.createClientPlugin(entityKind); - final ITabItemFactory tabView = + final AbstractTabItemFactory tabView = createClientPlugin.createEntityViewer(entityType, matchingEntity.asIdentifiable()); + tabView.setInBackground(inBackground); DispatcherHelper.dispatchNaviEvent(tabView); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ProjectViewer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ProjectViewer.java index 893f03d47328a3ba691971e22d5f28c8c621238b..466ee4f3db6ddfed5526ee16c2486036c049a3f8 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ProjectViewer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ProjectViewer.java @@ -181,10 +181,10 @@ public final class ProjectViewer extends AbstractViewer<IEntityInformationHolder } @Override - protected void showEntityEditor() + protected void showEntityEditor(boolean inBackground) { assert originalProject != null; - ProjectGrid.showEntityViewer(originalProject, true, viewContext); + ProjectGrid.showEntityViewer(originalProject, true, viewContext, inBackground); } public void update(Set<DatabaseModificationKind> observedModifications) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/SearchWidget.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/SearchWidget.java index 60bf60fcb99a4e7025087aa84bd932be5da0859b..e01f7c8eb4af14dbc785649e34a3d71800ce7786 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/SearchWidget.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/SearchWidget.java @@ -22,10 +22,10 @@ import com.extjs.gxt.ui.client.widget.form.TextField; import com.extjs.gxt.ui.client.widget.layout.TableRowLayout; import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.AbstractTabItemFactory; 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.ITabItemFactory; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier.HelpPageAction; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier.HelpPageDomain; @@ -158,7 +158,7 @@ public final class SearchWidget extends LayoutContainer new MatchingEntitiesPanel(viewContext, selectedSearchableEntityOrNull, queryText, useWildcardSearchMode); String title = createTabTitle(queryText); - final ITabItemFactory tabFactory = + final AbstractTabItemFactory tabFactory = createTabFactory(matchingEntitiesGrid, title, viewContext); matchingEntitiesGrid.refresh(new IDataRefreshCallback() @@ -194,7 +194,7 @@ public final class SearchWidget extends LayoutContainer return viewContext.getMessage(Dict.GLOBAL_SEARCH, selectedText, queryText); } - private static ITabItemFactory createTabFactory( + private static AbstractTabItemFactory createTabFactory( final MatchingEntitiesPanel matchingEntitiesPanel, String title, IViewContext<?> viewContext) { @@ -203,18 +203,21 @@ public final class SearchWidget extends LayoutContainer viewContext); // this tab cannot be opened for the second time, so we can create it outside of the // factory - return new ITabItemFactory() + return new AbstractTabItemFactory() { + @Override public ITabItem create() { return tab; } + @Override public String getId() { return matchingEntitiesPanel.getId(); } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.SEARCH, HelpPageAction.ACTION); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ShowRelatedDatasetsDialog.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ShowRelatedDatasetsDialog.java index cb2fb7dfadfa0f5db6bfd443b0bb366fe2625f59..be5ed22ea7b8f163961e2e0463ec52a1570d3b45 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ShowRelatedDatasetsDialog.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ShowRelatedDatasetsDialog.java @@ -23,10 +23,10 @@ import com.extjs.gxt.ui.client.widget.form.Radio; import com.extjs.gxt.ui.client.widget.form.RadioGroup; import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.AbstractTabItemFactory; 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.ITabItemFactory; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier.HelpPageAction; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier.HelpPageDomain; @@ -50,8 +50,9 @@ public final class ShowRelatedDatasetsDialog extends final IViewContext<ICommonClientServiceAsync> viewContext, final RelatedDataSetCriteria criteria) { - final ITabItemFactory tabFactory = new ITabItemFactory() + final AbstractTabItemFactory tabFactory = new AbstractTabItemFactory() { + @Override public ITabItem create() { IDisposableComponent component = @@ -59,6 +60,7 @@ public final class ShowRelatedDatasetsDialog extends return DefaultTabItem.create(getTabTitle(), component, viewContext); } + @Override public String getId() { return RelatedDataSetGrid.BROWSER_ID + XDOM.getUniqueId(); @@ -69,6 +71,7 @@ public final class ShowRelatedDatasetsDialog extends return "Related Data Sets"; } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.RELATED_DATA_SETS, diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/ITabItemFactory.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/AbstractTabItemFactory.java similarity index 74% rename from openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/ITabItemFactory.java rename to openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/AbstractTabItemFactory.java index 60f40b7955d7138a4b5a1310b7f2a6a53f138d55..599732b908074fd8071a2fe738d44b205505952d 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/ITabItemFactory.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/AbstractTabItemFactory.java @@ -24,10 +24,12 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpP * * @author Tomasz Pylak */ -public interface ITabItemFactory +public abstract class AbstractTabItemFactory { + private boolean inBackground = false; + /** Creates and initializes a new tab. */ - ITabItem create(); + public abstract ITabItem create(); /** * Returns the unique identifier of this tab item. Note that the id should be unique among all @@ -37,11 +39,24 @@ public interface ITabItemFactory * one already created will get the focus. * </p> */ - public String getId(); + public abstract String getId(); /** * Returns the identifier of the help page for this tab item. */ - public HelpPageIdentifier getHelpPageIdentifier(); + public abstract HelpPageIdentifier getHelpPageIdentifier(); + + /** + * True if the tab should become active. + */ + public boolean isInBackground() + { + return inBackground; + } + + public void setInBackground(boolean inBackground) + { + this.inBackground = inBackground; + } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/AppView.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/AppView.java index f49b7fa0b62ab028b766242c54c3abcb0d93dcfd..a781cbde55cb430e0a0d8d44eb00c2d27609a5e8 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/AppView.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/AppView.java @@ -53,12 +53,12 @@ final class AppView extends View this.viewContext = viewContext; } - private final ITabItemFactory getData(final AppEvent event) + private final AbstractTabItemFactory getData(final AppEvent event) { return event.getData(); } - private final void activateTab(final ITabItemFactory tabItemFactory) + private final void activateTab(final AbstractTabItemFactory tabItemFactory) { center.openTab(tabItemFactory); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/ComponentProvider.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/ComponentProvider.java index 9842122f4a78033b0cc364dc38bc900657c5e08d..c0f3db1aeb0e64e5be16b25a2edd54a6471eff2b 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/ComponentProvider.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/ComponentProvider.java @@ -102,11 +102,12 @@ public final class ComponentProvider isCloseConfirmationNeeded); } - public ITabItemFactory getSampleBrowser(final String initialGroupOrNull, + public AbstractTabItemFactory getSampleBrowser(final String initialGroupOrNull, final String initialSampleTypeOrNull) { - return new ITabItemFactory() + return new AbstractTabItemFactory() { + @Override public ITabItem create() { System.err.println(initialGroupOrNull + " " + initialSampleTypeOrNull); @@ -117,11 +118,13 @@ public final class ComponentProvider return createTab(Dict.SAMPLE_BROWSER, browser); } + @Override public String getId() { return SampleBrowserGrid.BROWSER_ID; } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.SAMPLE, HelpPageAction.BROWSE); @@ -129,15 +132,16 @@ public final class ComponentProvider }; } - public final ITabItemFactory getSampleBrowser() + public final AbstractTabItemFactory getSampleBrowser() { return getSampleBrowser(null, null); } - public final ITabItemFactory getMaterialBrowser() + public final AbstractTabItemFactory getMaterialBrowser() { - return new ITabItemFactory() + return new AbstractTabItemFactory() { + @Override public ITabItem create() { IDisposableComponent browser = @@ -145,33 +149,39 @@ public final class ComponentProvider return createTab(Dict.MATERIAL_BROWSER, browser); } + @Override public String getId() { return MaterialBrowserGrid.BROWSER_ID; } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.MATERIAL, HelpPageAction.BROWSE); } + }; } - public final ITabItemFactory getGroupBrowser() + public final AbstractTabItemFactory getGroupBrowser() { - return new ITabItemFactory() + return new AbstractTabItemFactory() { + @Override public ITabItem create() { IDisposableComponent component = GroupGrid.create(viewContext); return createTab(Dict.GROUP_BROWSER, component); } + @Override public String getId() { return GroupGrid.BROWSER_ID; } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.GROUP, HelpPageAction.BROWSE); @@ -179,21 +189,24 @@ public final class ComponentProvider }; } - public final ITabItemFactory getAuthorizationGroupBrowser() + public final AbstractTabItemFactory getAuthorizationGroupBrowser() { - return new ITabItemFactory() + return new AbstractTabItemFactory() { + @Override public ITabItem create() { IDisposableComponent component = AuthorizationGroupGrid.create(viewContext); return createTab(Dict.AUTHORIZATION_GROUP_BROWSER, component); } + @Override public String getId() { return AuthorizationGroupGrid.BROWSER_ID; } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.AUTHORIZATION_GROUPS, @@ -202,21 +215,24 @@ public final class ComponentProvider }; } - public final ITabItemFactory getRoleAssignmentBrowser() + public final AbstractTabItemFactory getRoleAssignmentBrowser() { - return new ITabItemFactory() + return new AbstractTabItemFactory() { + @Override public ITabItem create() { IDisposableComponent component = RoleAssignmentGrid.create(viewContext); return createTab(Dict.ROLE_ASSIGNMENT_BROWSER, component); } + @Override public String getId() { return RoleAssignmentGrid.BROWSER_ID; } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.ROLES, HelpPageAction.BROWSE); @@ -224,21 +240,24 @@ public final class ComponentProvider }; } - public final ITabItemFactory getPersonBrowser() + public final AbstractTabItemFactory getPersonBrowser() { - return new ITabItemFactory() + return new AbstractTabItemFactory() { + @Override public ITabItem create() { IDisposableComponent component = PersonGrid.create(viewContext); return createTab(Dict.PERSON_BROWSER, component); } + @Override public String getId() { return PersonGrid.createBrowserId(); } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.USERS, HelpPageAction.BROWSE); @@ -246,10 +265,11 @@ public final class ComponentProvider }; } - public final ITabItemFactory getSampleRegistration() + public final AbstractTabItemFactory getSampleRegistration() { - return new ITabItemFactory() + return new AbstractTabItemFactory() { + @Override public ITabItem create() { DatabaseModificationAwareComponent component = @@ -257,11 +277,13 @@ public final class ComponentProvider return createRegistrationTab(Dict.SAMPLE_REGISTRATION, component); } + @Override public String getId() { return SampleRegistrationPanel.ID; } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.SAMPLE, HelpPageAction.REGISTER); @@ -269,10 +291,11 @@ public final class ComponentProvider }; } - public final ITabItemFactory getExperimentRegistration() + public final AbstractTabItemFactory getExperimentRegistration() { - return new ITabItemFactory() + return new AbstractTabItemFactory() { + @Override public ITabItem create() { DatabaseModificationAwareComponent component = @@ -280,11 +303,13 @@ public final class ComponentProvider return createRegistrationTab(Dict.EXPERIMENT_REGISTRATION, component); } + @Override public String getId() { return ExperimentRegistrationPanel.ID; } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.EXPERIMENT, @@ -293,11 +318,12 @@ public final class ComponentProvider }; } - public final ITabItemFactory getSampleBatchRegistration() + public final AbstractTabItemFactory getSampleBatchRegistration() { final boolean update = false; - return new ITabItemFactory() + return new AbstractTabItemFactory() { + @Override public ITabItem create() { DatabaseModificationAwareComponent component = @@ -305,11 +331,13 @@ public final class ComponentProvider return createRegistrationTab(Dict.SAMPLE_BATCH_REGISTRATION, component); } + @Override public String getId() { return SampleBatchRegisterUpdatePanel.getId(update); } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.SAMPLE, HelpPageAction.IMPORT); @@ -317,12 +345,13 @@ public final class ComponentProvider }; } - public final ITabItemFactory getSampleBatchUpdate() + public final AbstractTabItemFactory getSampleBatchUpdate() { final boolean update = true; - return new ITabItemFactory() + return new AbstractTabItemFactory() { + @Override public ITabItem create() { DatabaseModificationAwareComponent component = @@ -330,11 +359,13 @@ public final class ComponentProvider return createRegistrationTab(Dict.SAMPLE_BATCH_UPDATE, component); } + @Override public String getId() { return SampleBatchRegisterUpdatePanel.getId(update); } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.SAMPLE, @@ -343,10 +374,11 @@ public final class ComponentProvider }; } - public final ITabItemFactory getMaterialBatchRegistration() + public final AbstractTabItemFactory getMaterialBatchRegistration() { - return new ITabItemFactory() + return new AbstractTabItemFactory() { + @Override public ITabItem create() { DatabaseModificationAwareComponent component = @@ -354,11 +386,13 @@ public final class ComponentProvider return createRegistrationTab(Dict.MATERIAL_IMPORT, component); } + @Override public String getId() { return MaterialBatchRegistrationPanel.ID; } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.MATERIAL, HelpPageAction.IMPORT); @@ -366,21 +400,24 @@ public final class ComponentProvider }; } - public final ITabItemFactory getVocabularyRegistration() + public final AbstractTabItemFactory getVocabularyRegistration() { - return new ITabItemFactory() + return new AbstractTabItemFactory() { + @Override public ITabItem create() { Component component = new VocabularyRegistrationForm(viewContext); return createSimpleTab(Dict.VOCABULARY_REGISTRATION, component, true); } + @Override public String getId() { return VocabularyRegistrationForm.ID; } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.VOCABULARY, @@ -389,10 +426,11 @@ public final class ComponentProvider }; } - public final ITabItemFactory getProjectRegistration() + public final AbstractTabItemFactory getProjectRegistration() { - return new ITabItemFactory() + return new AbstractTabItemFactory() { + @Override public ITabItem create() { DatabaseModificationAwareComponent component = @@ -400,11 +438,13 @@ public final class ComponentProvider return createRegistrationTab(Dict.PROJECT_REGISTRATION, component); } + @Override public String getId() { return ProjectRegistrationForm.createId(); } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.PROJECT, HelpPageAction.REGISTER); @@ -412,21 +452,24 @@ public final class ComponentProvider }; } - public final ITabItemFactory getVocabularyBrowser() + public final AbstractTabItemFactory getVocabularyBrowser() { - return new ITabItemFactory() + return new AbstractTabItemFactory() { + @Override public ITabItem create() { IDisposableComponent component = VocabularyGrid.create(viewContext); return createTab(Dict.VOCABULARY_BROWSER, component); } + @Override public String getId() { return VocabularyGrid.GRID_ID; } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.VOCABULARY, HelpPageAction.BROWSE); @@ -434,21 +477,24 @@ public final class ComponentProvider }; } - public final ITabItemFactory getProjectBrowser() + public final AbstractTabItemFactory getProjectBrowser() { - return new ITabItemFactory() + return new AbstractTabItemFactory() { + @Override public ITabItem create() { IDisposableComponent component = ProjectGrid.create(viewContext); return createTab(Dict.PROJECT_BROWSER, component); } + @Override public String getId() { return ProjectGrid.BROWSER_ID; } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.PROJECT, HelpPageAction.BROWSE); @@ -456,11 +502,12 @@ public final class ComponentProvider }; } - public ITabItemFactory getExperimentBrowser(final String initialProjectOrNull, + public AbstractTabItemFactory getExperimentBrowser(final String initialProjectOrNull, final String initialExperimentTypeOrNull) { - return new ITabItemFactory() + return new AbstractTabItemFactory() { + @Override public ITabItem create() { IDisposableComponent browser = @@ -469,11 +516,13 @@ public final class ComponentProvider return createTab(Dict.EXPERIMENT_BROWSER, browser); } + @Override public String getId() { return ExperimentBrowserGrid.BROWSER_ID; } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.EXPERIMENT, HelpPageAction.BROWSE); @@ -481,26 +530,29 @@ public final class ComponentProvider }; } - public ITabItemFactory getExperimentBrowser() + public AbstractTabItemFactory getExperimentBrowser() { return getExperimentBrowser(null, null); } - public ITabItemFactory getPropertyTypeBrowser() + public AbstractTabItemFactory getPropertyTypeBrowser() { - return new ITabItemFactory() + return new AbstractTabItemFactory() { + @Override public ITabItem create() { IDisposableComponent component = PropertyTypeGrid.create(viewContext); return createTab(Dict.PROPERTY_TYPES, component); } + @Override public String getId() { return PropertyTypeGrid.BROWSER_ID; } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.PROPERTY_TYPE, @@ -509,10 +561,11 @@ public final class ComponentProvider }; } - public ITabItemFactory getPropertyTypeRegistration() + public AbstractTabItemFactory getPropertyTypeRegistration() { - return new ITabItemFactory() + return new AbstractTabItemFactory() { + @Override public ITabItem create() { DatabaseModificationAwareComponent component = @@ -520,11 +573,13 @@ public final class ComponentProvider return createRegistrationTab(Dict.PROPERTY_TYPE_REGISTRATION, component); } + @Override public String getId() { return PropertyTypeRegistrationForm.ID; } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.PROPERTY_TYPE, @@ -533,21 +588,24 @@ public final class ComponentProvider }; } - public ITabItemFactory getPropertyTypeAssignmentBrowser() + public AbstractTabItemFactory getPropertyTypeAssignmentBrowser() { - return new ITabItemFactory() + return new AbstractTabItemFactory() { + @Override public ITabItem create() { IDisposableComponent component = PropertyTypeAssignmentGrid.create(viewContext); return createTab(Dict.PROPERTY_TYPE_ASSIGNMENTS, component); } + @Override public String getId() { return PropertyTypeAssignmentGrid.BROWSER_ID; } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.ASSIGNMENT, HelpPageAction.BROWSE); @@ -555,34 +613,35 @@ public final class ComponentProvider }; } - public ITabItemFactory getPropertyTypeExperimentTypeAssignmentForm() + public AbstractTabItemFactory getPropertyTypeExperimentTypeAssignmentForm() { return getPropertyTypeAssignmentForm(EntityKind.EXPERIMENT, Dict.ASSIGN_EXPERIMENT_PROPERTY_TYPE); } - public ITabItemFactory getPropertyTypeMaterialTypeAssignmentForm() + public AbstractTabItemFactory getPropertyTypeMaterialTypeAssignmentForm() { return getPropertyTypeAssignmentForm(EntityKind.MATERIAL, Dict.ASSIGN_MATERIAL_PROPERTY_TYPE); } - public ITabItemFactory getPropertyTypeDataSetTypeAssignmentForm() + public AbstractTabItemFactory getPropertyTypeDataSetTypeAssignmentForm() { return getPropertyTypeAssignmentForm(EntityKind.DATA_SET, Dict.ASSIGN_DATA_SET_PROPERTY_TYPE); } - public ITabItemFactory getPropertyTypeSampleTypeAssignmentForm() + public AbstractTabItemFactory getPropertyTypeSampleTypeAssignmentForm() { return getPropertyTypeAssignmentForm(EntityKind.SAMPLE, Dict.ASSIGN_SAMPLE_PROPERTY_TYPE); } - private ITabItemFactory getPropertyTypeAssignmentForm(final EntityKind entityKind, + private AbstractTabItemFactory getPropertyTypeAssignmentForm(final EntityKind entityKind, final String messageKey) { - return new ITabItemFactory() + return new AbstractTabItemFactory() { + @Override public ITabItem create() { DatabaseModificationAwareComponent component = @@ -590,11 +649,13 @@ public final class ComponentProvider return createRegistrationTab(messageKey, component); } + @Override public String getId() { return PropertyTypeAssignmentForm.createId(entityKind); } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.ASSIGNMENT, @@ -603,21 +664,24 @@ public final class ComponentProvider }; } - public ITabItemFactory getDataSetSearch() + public AbstractTabItemFactory getDataSetSearch() { - return new ITabItemFactory() + return new AbstractTabItemFactory() { + @Override public ITabItem create() { IDisposableComponent browser = DataSetSearchHitGrid.create(viewContext); return createTab(Dict.DATA_SET_SEARCH, browser); } + @Override public String getId() { return DataSetSearchHitGrid.BROWSER_ID; } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.DATA_SET, HelpPageAction.SEARCH); @@ -625,21 +689,24 @@ public final class ComponentProvider }; } - public ITabItemFactory getSampleSearch() + public AbstractTabItemFactory getSampleSearch() { - return new ITabItemFactory() + return new AbstractTabItemFactory() { + @Override public ITabItem create() { IDisposableComponent browser = SampleSearchHitGrid.create(viewContext); return createTab(Dict.SAMPLE_SEARCH, browser); } + @Override public String getId() { return SampleSearchHitGrid.SEARCH_BROWSER_ID; } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.SAMPLE, HelpPageAction.SEARCH); @@ -647,21 +714,24 @@ public final class ComponentProvider }; } - public ITabItemFactory getSampleTypeBrowser() + public AbstractTabItemFactory getSampleTypeBrowser() { - return new ITabItemFactory() + return new AbstractTabItemFactory() { + @Override public ITabItem create() { IDisposableComponent component = SampleTypeGrid.create(viewContext); return createTab(Dict.SAMPLE_TYPES, component); } + @Override public String getId() { return SampleTypeGrid.BROWSER_ID; } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.SAMPLE_TYPE, HelpPageAction.BROWSE); @@ -670,21 +740,24 @@ public final class ComponentProvider }; } - public ITabItemFactory getMaterialTypeBrowser() + public AbstractTabItemFactory getMaterialTypeBrowser() { - return new ITabItemFactory() + return new AbstractTabItemFactory() { + @Override public ITabItem create() { IDisposableComponent component = MaterialTypeGrid.create(viewContext); return createTab(Dict.MATERIAL_TYPES, component); } + @Override public String getId() { return MaterialTypeGrid.BROWSER_ID; } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.MATERIAL_TYPE, @@ -693,21 +766,24 @@ public final class ComponentProvider }; } - public ITabItemFactory getExperimentTypeBrowser() + public AbstractTabItemFactory getExperimentTypeBrowser() { - return new ITabItemFactory() + return new AbstractTabItemFactory() { + @Override public ITabItem create() { IDisposableComponent component = ExperimentTypeGrid.create(viewContext); return createTab(Dict.EXPERIMENT_TYPES, component); } + @Override public String getId() { return ExperimentTypeGrid.BROWSER_ID; } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.EXPERIMENT_TYPE, @@ -716,21 +792,24 @@ public final class ComponentProvider }; } - public ITabItemFactory getDataSetTypeBrowser() + public AbstractTabItemFactory getDataSetTypeBrowser() { - return new ITabItemFactory() + return new AbstractTabItemFactory() { + @Override public ITabItem create() { IDisposableComponent component = DataSetTypeGrid.create(viewContext); return createTab(Dict.DATA_SET_TYPES, component); } + @Override public String getId() { return DataSetTypeGrid.BROWSER_ID; } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.DATA_SET_TYPE, @@ -739,10 +818,11 @@ public final class ComponentProvider }; } - public ITabItemFactory getDataSetUploadTab() + public AbstractTabItemFactory getDataSetUploadTab() { - return new ITabItemFactory() + return new AbstractTabItemFactory() { + @Override public ITabItem create() { DatabaseModificationAwareComponent component = @@ -750,11 +830,13 @@ public final class ComponentProvider return createRegistrationTab(Dict.DATA_SET_UPLOAD, component); } + @Override public String getId() { return DataSetUploadForm.ID; } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.DATA_SET, HelpPageAction.REGISTER); @@ -762,21 +844,24 @@ public final class ComponentProvider }; } - public ITabItemFactory getFileFormatTypeBrowser() + public AbstractTabItemFactory getFileFormatTypeBrowser() { - return new ITabItemFactory() + return new AbstractTabItemFactory() { + @Override public ITabItem create() { IDisposableComponent component = FileFormatTypeGrid.create(viewContext); return createTab(Dict.FILE_FORMAT_TYPES, component); } + @Override public String getId() { return FileFormatTypeGrid.BROWSER_ID; } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.FILE_TYPE, HelpPageAction.BROWSE); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/DispatcherHelper.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/DispatcherHelper.java index a4a3f884a354c423f525efab658a1a776f3b2783..722307a2992eebe2f8a2136b6c254a38ea3fa752 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/DispatcherHelper.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/DispatcherHelper.java @@ -45,7 +45,7 @@ public final class DispatcherHelper * Creates and dispatches an event of type {@link AppEvents#NAVI_EVENT}. The event opens a new * tab. */ - public final static void dispatchNaviEvent(final ITabItemFactory tabItemFactory) + public final static void dispatchNaviEvent(final AbstractTabItemFactory tabItemFactory) { AppEvent event = createEvent(AppEvents.NAVI_EVENT, tabItemFactory); Dispatcher.get().dispatch(event); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/MainTabPanel.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/MainTabPanel.java index ac075635da2d8fe3a0396490c181db050109a490..ad67f5da3f839d70fa7fa47370ba58da8def2d7c 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/MainTabPanel.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/MainTabPanel.java @@ -96,7 +96,7 @@ public class MainTabPanel extends TabPanel return div.getString(); } - private final MainTabItem tryFindTab(final ITabItemFactory tabItemFactory) + private final MainTabItem tryFindTab(final AbstractTabItemFactory tabItemFactory) { return openTabs.get(tabItemFactory.getId()); } @@ -108,12 +108,13 @@ public class MainTabPanel extends TabPanel * be generated out of given {@link ITabItem}. * </p> */ - public final void openTab(final ITabItemFactory tabItemFactory) + public final void openTab(final AbstractTabItemFactory tabItemFactory) { + boolean inBackground = tabItemFactory.isInBackground(); final MainTabItem tab = tryFindTab(tabItemFactory); if (tab != null) { - setSelection(tab); + maybeActivate(tab, inBackground); } else { final String tabId = tabItemFactory.getId(); @@ -125,7 +126,18 @@ public class MainTabPanel extends TabPanel final MainTabItem newTab = new MainTabItem(tabItemFactory.create(), tabId, helpId); add(newTab); openTabs.put(tabId, newTab); - setSelection(newTab); + maybeActivate(newTab, inBackground); + } + } + + private void maybeActivate(MainTabItem tab, boolean inBackground) + { + if (inBackground == false) + { + setSelection(tab); + } else + { + // TODO 2010-03-18, IA: Shall we somehow inform the user? } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/locator/DataSetSearchLocatorResolver.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/locator/DataSetSearchLocatorResolver.java index 2e9fafe4a06a4da3ed528f1f7d731326ba5537e8..39d1dd8ea1a7d2e354e4af75a29480a9b8b90b49 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/locator/DataSetSearchLocatorResolver.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/locator/DataSetSearchLocatorResolver.java @@ -19,10 +19,10 @@ 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.IViewContext; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.AbstractTabItemFactory; 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.ITabItemFactory; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier.HelpPageAction; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier.HelpPageDomain; @@ -50,11 +50,10 @@ public class DataSetSearchLocatorResolver // Open the search view using the provided criteria OpenEntitySearchGridTabAction searchAction = new OpenEntitySearchGridTabAction(searchCriteria, viewContext); - DispatcherHelper.dispatchNaviEvent(searchAction); } - private static class OpenEntitySearchGridTabAction implements ITabItemFactory + private static class OpenEntitySearchGridTabAction extends AbstractTabItemFactory { private final DetailedSearchCriteria searchCriteria; @@ -78,6 +77,7 @@ public class DataSetSearchLocatorResolver return DefaultTabItem.create(title, component, viewContext); } + @Override public ITabItem create() { IDisposableComponent browser = @@ -86,11 +86,13 @@ public class DataSetSearchLocatorResolver return createTab(Dict.DATA_SET_SEARCH, browser); } + @Override public String getId() { return DataSetSearchHitGrid.BROWSER_ID; } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.DATA_SET, HelpPageAction.SEARCH); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/locator/SampleSearchLocatorResolver.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/locator/SampleSearchLocatorResolver.java index a4fc2b6a5852292d3e3d9e42ac0f6a8c115ebac9..67db705835889fceb769c8bb7554e7f44b8abaf1 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/locator/SampleSearchLocatorResolver.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/locator/SampleSearchLocatorResolver.java @@ -22,10 +22,10 @@ import com.google.gwt.user.client.rpc.AsyncCallback; 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.IViewContext; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.AbstractTabItemFactory; 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.ITabItemFactory; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier.HelpPageAction; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier.HelpPageDomain; @@ -104,7 +104,6 @@ public class SampleSearchLocatorResolver default: OpenEntitySearchGridTabAction searchAction = new OpenEntitySearchGridTabAction(displayCriteria, viewContext); - DispatcherHelper.dispatchNaviEvent(searchAction); break; @@ -112,7 +111,7 @@ public class SampleSearchLocatorResolver } } - private static class OpenEntitySearchGridTabAction implements ITabItemFactory + private static class OpenEntitySearchGridTabAction extends AbstractTabItemFactory { private final ListSampleDisplayCriteria displayCriteria; @@ -136,6 +135,7 @@ public class SampleSearchLocatorResolver return DefaultTabItem.create(title, component, viewContext); } + @Override public ITabItem create() { IDisposableComponent browser = @@ -144,11 +144,13 @@ public class SampleSearchLocatorResolver return createTab(Dict.SAMPLE_SEARCH, browser); } + @Override public String getId() { return SampleSearchHitGrid.SEARCH_BROWSER_ID; } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.SAMPLE, HelpPageAction.SEARCH); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/menu/ActionMenu.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/menu/ActionMenu.java index 53acaa6d213f269082bca7f9133ffd023e435aaf..d8a30258687bc1163c41ccd020b6ef85ae3a2f41 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/menu/ActionMenu.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/menu/ActionMenu.java @@ -20,8 +20,8 @@ import com.extjs.gxt.ui.client.event.MenuEvent; import com.extjs.gxt.ui.client.event.SelectionListener; import com.extjs.gxt.ui.client.widget.menu.MenuItem; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.AbstractTabItemFactory; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DispatcherHelper; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ITabItemFactory; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IDelegatedAction; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IMessageProvider; @@ -62,7 +62,7 @@ public class ActionMenu extends MenuItem } public ActionMenu(final IActionMenuItem actionMenu, IMessageProvider messageProvider, - final ITabItemFactory tabToOpen) + final AbstractTabItemFactory tabToOpen) { this(actionMenu, messageProvider, new IDelegatedAction() { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/menu/TabActionMenuItemFactory.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/menu/TabActionMenuItemFactory.java index 593c4cef8d4b1021fddb839a735ad5e4808f0b9e..f22ae7235020d8444b6ca650995e49b04dd21ef5 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/menu/TabActionMenuItemFactory.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/menu/TabActionMenuItemFactory.java @@ -20,7 +20,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.IClientServiceAsync; import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DefaultTabItem; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ITabItem; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ITabItemFactory; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.AbstractTabItemFactory; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IMessageProvider; @@ -48,13 +48,15 @@ public class TabActionMenuItemFactory } }; final String tabLabelKey = definition.getName() + "_tab_label"; - return new ActionMenu(menuItem, viewContext, new ITabItemFactory() + return new ActionMenu(menuItem, viewContext, new AbstractTabItemFactory() { + @Override public String getId() { return widgetIDPrefix + "_" + tabLabelKey; } + @Override public ITabItem create() { String tabItemText = viewContext.getMessage(tabLabelKey); @@ -62,6 +64,7 @@ public class TabActionMenuItemFactory .createComponent(viewContext), viewContext, false); } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return HelpPageIdentifier.createSpecific(definition.getHelpPageTitle()); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/plugin/ClientPluginAdapter.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/plugin/ClientPluginAdapter.java index 5680ad308c9de8d3d6c75d71ae8944cb79c3f5ef..e7b729be8f4d0fa20705bdcad3a1b784c8ea37dd 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/plugin/ClientPluginAdapter.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/plugin/ClientPluginAdapter.java @@ -19,7 +19,7 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin; import com.google.gwt.user.client.ui.Widget; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DatabaseModificationAwareWidget; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ITabItemFactory; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.AbstractTabItemFactory; import ch.systemsx.cisd.openbis.generic.shared.basic.IIdentifiable; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.BasicEntityType; @@ -47,7 +47,7 @@ public class ClientPluginAdapter<E extends BasicEntityType, I extends IIdentifia throw new UnsupportedOperationException("Not yet implemented."); } - public ITabItemFactory createEntityViewer(final E entityType, final I identifiable) + public AbstractTabItemFactory createEntityViewer(final E entityType, final I identifiable) { throw new UnsupportedOperationException("Not yet implemented."); } @@ -57,7 +57,7 @@ public class ClientPluginAdapter<E extends BasicEntityType, I extends IIdentifia throw new UnsupportedOperationException("Not yet implemented."); } - public ITabItemFactory createEntityEditor(final E entityType, I identifiable) + public AbstractTabItemFactory createEntityEditor(final E entityType, I identifiable) { throw new UnsupportedOperationException("Not yet implemented."); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/plugin/IClientPlugin.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/plugin/IClientPlugin.java index e03b5d85c6848956f21f83f999a8245f1a4d8ae7..cbc5a2b62710114bc49ce0d8fa7298b227bf946a 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/plugin/IClientPlugin.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/plugin/IClientPlugin.java @@ -19,7 +19,7 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin; import com.google.gwt.user.client.ui.Widget; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DatabaseModificationAwareWidget; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ITabItemFactory; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.AbstractTabItemFactory; import ch.systemsx.cisd.openbis.generic.shared.basic.IIdentifiable; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.BasicEntityType; @@ -40,7 +40,7 @@ public interface IClientPlugin<T extends BasicEntityType, I extends IIdentifiabl /** * Shows a detailed view of the entity specified by its <var>identifier</var>. */ - public ITabItemFactory createEntityViewer(final T entityType, final I identifiable); + public AbstractTabItemFactory createEntityViewer(final T entityType, final I identifiable); /** * Shows a registration form for entities of given <var>entityType</var>. @@ -60,5 +60,5 @@ public interface IClientPlugin<T extends BasicEntityType, I extends IIdentifiabl /** * Shows a editor of the specified entity.. */ - public ITabItemFactory createEntityEditor(final T entityType, final I identifiable); + public AbstractTabItemFactory createEntityEditor(final T entityType, final I identifiable); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/AbstractViewer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/AbstractViewer.java index 8785fab34cb70e1d1e5bc3a79777c2ea2af90285..289eefdf663498a8e6e83679dd51790f71e84f96 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/AbstractViewer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/AbstractViewer.java @@ -22,6 +22,7 @@ import java.util.List; import com.extjs.gxt.ui.client.Style.LayoutRegion; import com.extjs.gxt.ui.client.event.BaseEvent; +import com.extjs.gxt.ui.client.event.ButtonEvent; import com.extjs.gxt.ui.client.event.Events; import com.extjs.gxt.ui.client.event.Listener; import com.extjs.gxt.ui.client.widget.ContentPanel; @@ -34,9 +35,9 @@ import com.extjs.gxt.ui.client.widget.toolbar.ToolBar; import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback; import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict; 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.AppEvents; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DispatcherHelper; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ITabItemFactory; import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.IClientPlugin; import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.IClientPluginFactory; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.GWTUtils; @@ -97,11 +98,11 @@ public abstract class AbstractViewer<D extends IEntityInformationHolder> extends { Button result = new Button(viewContext.getMessage(Dict.BUTTON_EDIT)); result.setId(getId() + ID_EDIT_SUFFIX); - result.addListener(Events.Select, new Listener<BaseEvent>() + result.addListener(Events.Select, new Listener<ButtonEvent>() { - public void handleEvent(BaseEvent be) + public void handleEvent(ButtonEvent be) { - showEntityEditor(); + showEntityEditor(be.isShiftKey()); } }); result.disable(); @@ -150,23 +151,25 @@ public abstract class AbstractViewer<D extends IEntityInformationHolder> extends return Collections.singletonList(getOriginalData()); } - protected void showEntityEditor() + protected void showEntityEditor(boolean inBackground) { assert originalData != null : "data is not yet set"; - showEntityEditor(originalData.getEntityKind(), originalData.getEntityType(), originalData); + showEntityEditor(originalData.getEntityKind(), originalData.getEntityType(), originalData, + inBackground); } private final void showEntityEditor(EntityKind entityKind, BasicEntityType type, - IIdentifiable identifiable) + IIdentifiable identifiable, boolean inBackground) { assert type != null : "entity type is not provided"; - final ITabItemFactory tabView; + final AbstractTabItemFactory tabView; final IClientPluginFactory clientPluginFactory = viewContext.getClientPluginFactoryProvider().getClientPluginFactory(entityKind, type); final IClientPlugin<BasicEntityType, IIdentifiable> createClientPlugin = clientPluginFactory.createClientPlugin(entityKind); tabView = createClientPlugin.createEntityEditor(type, identifiable); + tabView.setInBackground(inBackground); DispatcherHelper.dispatchNaviEvent(tabView); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/AuthorizationGroupGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/AuthorizationGroupGrid.java index 14af138e3cf04e56509aec6d67f266e81cae103c..ac9861e956efb68f42e758e0d46d9cee0a52abbd 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/AuthorizationGroupGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/AuthorizationGroupGrid.java @@ -30,11 +30,11 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAs 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.DefaultTabItem; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DispatcherHelper; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DisplayTypeIDGenerator; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ITabItem; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ITabItemFactory; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier.HelpPageAction; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier.HelpPageDomain; @@ -105,9 +105,12 @@ public class AuthorizationGroupGrid extends AbstractSimpleBrowserGrid<Authorizat createSelectedItemButton(viewContext.getMessage(Dict.BUTTON_SHOW_USERS), new ISelectedEntityInvoker<BaseEntityModel<AuthorizationGroup>>() { - public void invoke(BaseEntityModel<AuthorizationGroup> selectedItem) + public void invoke( + BaseEntityModel<AuthorizationGroup> selectedItem, + boolean keyPressed) { - showEntityViewer(selectedItem.getBaseObject(), false); + showEntityViewer(selectedItem.getBaseObject(), false, + keyPressed); } }); showDetailsButton.setId(USERS_BUTTON_ID); @@ -133,7 +136,8 @@ public class AuthorizationGroupGrid extends AbstractSimpleBrowserGrid<Authorizat new ISelectedEntityInvoker<BaseEntityModel<AuthorizationGroup>>() { - public void invoke(BaseEntityModel<AuthorizationGroup> selectedItem) + public void invoke(BaseEntityModel<AuthorizationGroup> selectedItem, + boolean keyPressed) { final AuthorizationGroup authGroup = selectedItem.getBaseObject(); createEditDialog(authGroup).show(); @@ -198,10 +202,11 @@ public class AuthorizationGroupGrid extends AbstractSimpleBrowserGrid<Authorizat } @Override - protected void showEntityViewer(final AuthorizationGroup group, boolean editMode) + protected void showEntityViewer(final AuthorizationGroup group, boolean editMode, boolean inBackground) { - final ITabItemFactory tabFactory = new ITabItemFactory() + final AbstractTabItemFactory tabFactory = new AbstractTabItemFactory() { + @Override public ITabItem create() { IDisposableComponent component = @@ -211,17 +216,20 @@ public class AuthorizationGroupGrid extends AbstractSimpleBrowserGrid<Authorizat return DefaultTabItem.create(tabTitle, component, viewContext); } + @Override public String getId() { return PersonGrid.createBrowserId(group); } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.AUTHORIZATION_GROUPS, HelpPageAction.VIEW); } }; + tabFactory.setInBackground(inBackground); DispatcherHelper.dispatchNaviEvent(tabFactory); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/GroupGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/GroupGrid.java index db07117449cd9c18be2b21c8a4eca8b415d28fd9..0b291c38181279f7e0b3faf05d649d54cd78702b 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/GroupGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/GroupGrid.java @@ -110,7 +110,8 @@ public class GroupGrid extends AbstractSimpleBrowserGrid<Space> createSelectedItemButton(viewContext.getMessage(Dict.BUTTON_EDIT), new ISelectedEntityInvoker<BaseEntityModel<Space>>() { - public void invoke(BaseEntityModel<Space> selectedItem) + public void invoke(BaseEntityModel<Space> selectedItem, + boolean keyPressed) { Space space = selectedItem.getBaseObject(); createEditDialog(space).show(); @@ -203,7 +204,7 @@ public class GroupGrid extends AbstractSimpleBrowserGrid<Space> } @Override - protected void showEntityViewer(final Space space, boolean editMode) + protected void showEntityViewer(final Space space, boolean editMode, boolean active) { assert false : "not implemented"; } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/PersonGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/PersonGrid.java index f9a2c647e1b036bcff165cfb3ab329403afb0ec8..a92549eb15100847acfee966fdf1fd0db0ff4cce 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/PersonGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/PersonGrid.java @@ -207,7 +207,7 @@ public class PersonGrid extends AbstractSimpleBrowserGrid<Person> } @Override - protected void showEntityViewer(final Person person, boolean editMode) + protected void showEntityViewer(final Person person, boolean editMode, boolean active) { assert false : "not implemented"; } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/RoleAssignmentGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/RoleAssignmentGrid.java index bd4329d3daa55ab81e92f9ec96286718299c6615..b4f0c7c89068017cd07d47525bab80712ca932f5 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/RoleAssignmentGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/RoleAssignmentGrid.java @@ -100,7 +100,8 @@ public class RoleAssignmentGrid extends AbstractSimpleBrowserGrid<RoleAssignment new ISelectedEntityInvoker<BaseEntityModel<RoleAssignment>>() { - public void invoke(BaseEntityModel<RoleAssignment> selectedItem) + public void invoke(BaseEntityModel<RoleAssignment> selectedItem, + boolean keyPressed) { RoleAssignment assignment = selectedItem.getBaseObject(); new RemoveRoleDialog(assignment).show(); @@ -188,7 +189,8 @@ public class RoleAssignmentGrid extends AbstractSimpleBrowserGrid<RoleAssignment } @Override - protected void showEntityViewer(final RoleAssignment roleAssignment, boolean editMode) + protected void showEntityViewer(final RoleAssignment roleAssignment, boolean editMode, + boolean active) { assert false : "not implemented"; } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/attachment/AttachmentBrowser.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/attachment/AttachmentBrowser.java index 295e66fe0e974d7a601e5e904bc9c1be775915b3..d27496d2e624dc68daecb4a62041af4f1512d18b 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/attachment/AttachmentBrowser.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/attachment/AttachmentBrowser.java @@ -45,11 +45,11 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAs 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.DefaultTabItem; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DispatcherHelper; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DisplayTypeIDGenerator; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ITabItem; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ITabItemFactory; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier.HelpPageAction; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier.HelpPageDomain; @@ -122,7 +122,7 @@ public class AttachmentBrowser extends AbstractSimpleBrowserGrid<AttachmentVersi registerLinkClickListenerFor(AttachmentColDefKind.FILE_NAME.id(), new ICellListener<AttachmentVersions>() { - public void handle(AttachmentVersions rowItem) + public void handle(AttachmentVersions rowItem, boolean keyPressed) { // don't need to check whether the value is null // because there will not be a link for null value @@ -135,14 +135,14 @@ public class AttachmentBrowser extends AbstractSimpleBrowserGrid<AttachmentVersi registerLinkClickListenerFor(AttachmentColDefKind.VERSION.id(), new ICellListener<AttachmentVersions>() { - public void handle(AttachmentVersions rowItem) + public void handle(AttachmentVersions rowItem, boolean keyPressed) { // don't need to check whether the value is null // because there will not be a link for null value final String fileName = rowItem.getCurrent().getFileName(); final List<Attachment> versions = rowItem.getVersions(); - showVersionsPanel(fileName, versions); + showVersionsPanel(fileName, versions, keyPressed); } }); } @@ -186,7 +186,8 @@ public class AttachmentBrowser extends AbstractSimpleBrowserGrid<AttachmentVersi new ISelectedEntityInvoker<BaseEntityModel<AttachmentVersions>>() { - public void invoke(BaseEntityModel<AttachmentVersions> selectedItem) + public void invoke(BaseEntityModel<AttachmentVersions> selectedItem, + boolean keyPressed) { AttachmentVersions versions = selectedItem.getBaseObject(); createEditAttachmentDialog(versions).show(); @@ -214,7 +215,8 @@ public class AttachmentBrowser extends AbstractSimpleBrowserGrid<AttachmentVersi { return new ISelectedEntityInvoker<BaseEntityModel<AttachmentVersions>>() { - public void invoke(BaseEntityModel<AttachmentVersions> selectedItem) + public void invoke(BaseEntityModel<AttachmentVersions> selectedItem, + boolean keyPressed) { AttachmentVersions versions = selectedItem.getBaseObject(); final String fileName = versions.getCurrent().getFileName(); @@ -260,7 +262,7 @@ public class AttachmentBrowser extends AbstractSimpleBrowserGrid<AttachmentVersi } @Override - protected void showEntityViewer(AttachmentVersions entity, boolean editMode) + protected void showEntityViewer(AttachmentVersions entity, boolean editMode, boolean active) { assert editMode == false : "edit mode is not implemented"; @@ -268,7 +270,7 @@ public class AttachmentBrowser extends AbstractSimpleBrowserGrid<AttachmentVersi final String fileName = entity.getCurrent().getFileName(); final List<Attachment> versions = entity.getVersions(); - showVersionsPanel(fileName, versions); + showVersionsPanel(fileName, versions, active); } private static void downloadAttachment(String fileName, int version, IAttachmentHolder holder) @@ -291,14 +293,16 @@ public class AttachmentBrowser extends AbstractSimpleBrowserGrid<AttachmentVersi return methodWithParameters.toString(); } - private void showVersionsPanel(final String fileName, final List<Attachment> versions) + private void showVersionsPanel(final String fileName, final List<Attachment> versions, + boolean inBackground) { assert versions != null : "versions not set!"; final VersionsPanelHelper helper = new VersionsPanelHelper(fileName, attachmentHolder, viewContext); - final ITabItemFactory tabFactory = new ITabItemFactory() + final AbstractTabItemFactory tabFactory = new AbstractTabItemFactory() { + @Override public ITabItem create() { final String tabTitle = helper.createTabTitle(); @@ -306,16 +310,19 @@ public class AttachmentBrowser extends AbstractSimpleBrowserGrid<AttachmentVersi return DefaultTabItem.createUnaware(tabTitle, component, false); } + @Override public String getId() { return helper.createTabId(); } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.ATTACHMENTS, HelpPageAction.VIEW); } }; + tabFactory.setInBackground(inBackground); DispatcherHelper.dispatchNaviEvent(tabFactory); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/AbstractExternalDataGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/AbstractExternalDataGrid.java index 964bf561094bb1f113672c6119374239d7dbab96..587809bfca9345709ded7c5284812a7f7eaf78fd 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/AbstractExternalDataGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/AbstractExternalDataGrid.java @@ -218,10 +218,10 @@ public abstract class AbstractExternalDataGrid { protected abstract IEntityInformationHolder getEntity(ExternalData rowItem); - public final void handle(ExternalData rowItem) + public final void handle(ExternalData rowItem, boolean keyPressed) { final IEntityInformationHolder entity = getEntity(rowItem); - new OpenEntityDetailsTabAction(entity, viewContext).execute(); + new OpenEntityDetailsTabAction(entity, viewContext, keyPressed).execute(); } } @@ -374,9 +374,9 @@ public abstract class AbstractExternalDataGrid } @Override - protected void showEntityViewer(ExternalData dataSet, boolean editMode) + protected void showEntityViewer(ExternalData dataSet, boolean editMode, boolean active) { - showEntityInformationHolderViewer(dataSet, editMode); + showEntityInformationHolderViewer(dataSet, editMode, active); } @Override diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetReportGenerator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetReportGenerator.java index 438a762f261638aebee9380fa72595b99d3f236e..f1f6b6f11a39c40375d133fd86677022e8f62643 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetReportGenerator.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetReportGenerator.java @@ -18,10 +18,10 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.data; import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync; 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.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.ITabItemFactory; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier.HelpPageAction; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier.HelpPageDomain; @@ -72,8 +72,9 @@ public class DataSetReportGenerator public void execute(final IDisposableComponent reportComponent) { - final ITabItemFactory tabFactory = new ITabItemFactory() + final AbstractTabItemFactory tabFactory = new AbstractTabItemFactory() { + @Override public ITabItem create() { final String reportTitle = service.getLabel(); @@ -81,12 +82,14 @@ public class DataSetReportGenerator viewContext); } + @Override public String getId() { final String reportKey = service.getKey(); return ReportGrid.createId(reportKey); } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.DATA_SET, diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/FileFormatTypeGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/FileFormatTypeGrid.java index 93d50f1015b8def75b98e463b998593a344b4acd..3845d121e53e9c1bad8ae31cacf4359b4eb1beae 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/FileFormatTypeGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/FileFormatTypeGrid.java @@ -103,7 +103,8 @@ public class FileFormatTypeGrid extends AbstractSimpleBrowserGrid<AbstractType> new ISelectedEntityInvoker<BaseEntityModel<AbstractType>>() { - public void invoke(BaseEntityModel<AbstractType> selectedItem) + public void invoke(BaseEntityModel<AbstractType> selectedItem, + boolean keyPressed) { AbstractType entityType = selectedItem.getBaseObject(); createEditEntityTypeDialog(entityType).show(); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/entity_type/AbstractEntityTypeGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/entity_type/AbstractEntityTypeGrid.java index ffc69960235c0c309e903a631ee5d7a18cc7a33b..1c41f8ce7720e3eab0b266e1bf60579a65bcc36c 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/entity_type/AbstractEntityTypeGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/entity_type/AbstractEntityTypeGrid.java @@ -99,7 +99,8 @@ abstract public class AbstractEntityTypeGrid<T extends EntityType> extends new ISelectedEntityInvoker<BaseEntityModel<T>>() { - public void invoke(BaseEntityModel<T> selectedItem) + public void invoke(BaseEntityModel<T> selectedItem, + boolean keyPressed) { T entityType = selectedItem.getBaseObject(); createEditEntityTypeDialog(entityKind, entityType).show(); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserGrid.java index ae9581b0d59415f324220ba42c9dbddd59fd9d1b..5422ea5f314ef36ad6e93470b22736782ad1d08c 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserGrid.java @@ -89,7 +89,8 @@ public class ExperimentBrowserGrid extends final ExperimentBrowserGrid browserGrid = new ExperimentBrowserGrid(viewContext, toolbar) { @Override - protected void showEntityViewer(Experiment experiment, boolean editMode) + protected void showEntityViewer(Experiment experiment, boolean editMode, + boolean active) { // do nothing - avoid showing the details after double click } @@ -133,9 +134,10 @@ public class ExperimentBrowserGrid extends registerLinkClickListenerFor(CommonSampleColDefKind.PROJECT.id(), new ICellListener<Experiment>() { - public void handle(Experiment rowItem) + public void handle(Experiment rowItem, boolean keyPressed) { - OpenEntityDetailsTabHelper.open(viewContext, rowItem.getProject()); + OpenEntityDetailsTabHelper.open(viewContext, rowItem.getProject(), + keyPressed); } }); setId(BROWSER_ID); @@ -209,9 +211,9 @@ public class ExperimentBrowserGrid extends } @Override - protected void showEntityViewer(Experiment experiment, boolean editMode) + protected void showEntityViewer(Experiment experiment, boolean editMode, boolean active) { - showEntityInformationHolderViewer(experiment, editMode); + showEntityInformationHolderViewer(experiment, editMode, active); } @Override diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ProjectSelectionTreeGridContainer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ProjectSelectionTreeGridContainer.java index f7bbad78fddd9ae1c23aa6db38594317f47e9c69..85b5612064b3f25c210437554bb4c025f6bd9293 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ProjectSelectionTreeGridContainer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ProjectSelectionTreeGridContainer.java @@ -58,6 +58,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.NonH import ch.systemsx.cisd.openbis.generic.client.web.client.application.renderer.LinkRenderer; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.listener.OpenEntityDetailsTabHelper; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.GWTUtils; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.WidgetUtils; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.lang.StringEscapeUtils; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ResultSet; @@ -214,7 +215,9 @@ public final class ProjectSelectionTreeGridContainer extends LayoutContainer imp public void onClick(ClickEvent event) { - showProjectDetailsView(project); + showProjectDetailsView(project, + WidgetUtils.ifSpecialKeyPressed(event + .getNativeEvent())); } }); @@ -301,9 +304,9 @@ public final class ProjectSelectionTreeGridContainer extends LayoutContainer imp return columnConfig; } - private void showProjectDetailsView(final Project project) + private void showProjectDetailsView(final Project project, boolean keyPressed) { - OpenEntityDetailsTabHelper.open(viewContext, project); + OpenEntityDetailsTabHelper.open(viewContext, project, keyPressed); } /** diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java index 86645b2e58e52939bc2a9ba3249bf3f65548aad1..f7d1513d403af920970085658b9502bbe2bc9a84 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java @@ -67,12 +67,12 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericCon import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ShowRelatedDatasetsDialog; import ch.systemsx.cisd.openbis.generic.client.web.client.application.VoidAsyncCallback; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.AbstractTabItemFactory; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DispatcherHelper; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DisplaySettingsManager; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.IDatabaseModificationObserver; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.IDisplaySettingsGetter; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.IDisplayTypeIDGenerator; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ITabItemFactory; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DisplaySettingsManager.GridDisplaySettings; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DisplaySettingsManager.Modification; import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.BaseEntityModel; @@ -122,7 +122,7 @@ public abstract class AbstractBrowserGrid<T/* Entity */, M extends BaseEntityMod /** * Shows the detail view for the specified entity */ - abstract protected void showEntityViewer(T entity, boolean editMode); + abstract protected void showEntityViewer(T entity, boolean editMode, boolean active); abstract protected void listEntities(DefaultResultSetConfig<String, T> resultSetConfig, AbstractAsyncCallback<ResultSet<T>> callback); @@ -268,9 +268,9 @@ public abstract class AbstractBrowserGrid<T/* Entity */, M extends BaseEntityMod columnListener = new ColumnListener<T, M>(grid); registerLinkClickListenerFor(Dict.CODE, new ICellListener<T>() { - public void handle(T rowItem) + public void handle(T rowItem, boolean keyPressed) { - showEntityViewer(rowItem, false); + showEntityViewer(rowItem, false, keyPressed); } }); @@ -281,10 +281,10 @@ public abstract class AbstractBrowserGrid<T/* Entity */, M extends BaseEntityMod } protected void showEntityInformationHolderViewer(IEntityInformationHolder entity, - boolean editMode) + boolean editMode, boolean inBackground) { final EntityKind entityKind = entity.getEntityKind(); - final ITabItemFactory tabView; + final AbstractTabItemFactory tabView; BasicEntityType entityType = entity.getEntityType(); final IClientPluginFactory clientPluginFactory = viewContext.getClientPluginFactoryProvider().getClientPluginFactory(entityKind, @@ -298,6 +298,7 @@ public abstract class AbstractBrowserGrid<T/* Entity */, M extends BaseEntityMod { tabView = createClientPlugin.createEntityViewer(entityType, entity); } + tabView.setInBackground(inBackground); DispatcherHelper.dispatchNaviEvent(tabView); } @@ -764,18 +765,18 @@ public abstract class AbstractBrowserGrid<T/* Entity */, M extends BaseEntityMod protected static interface ISelectedEntityInvoker<M> { - void invoke(M selectedItem); + void invoke(M selectedItem, boolean keyPressed); } protected final ISelectedEntityInvoker<M> asShowEntityInvoker(final boolean editMode) { return new ISelectedEntityInvoker<M>() { - public void invoke(M selectedItem) + public void invoke(M selectedItem, boolean keyPressed) { if (selectedItem != null) { - showEntityViewer(selectedItem.getBaseObject(), editMode); + showEntityViewer(selectedItem.getBaseObject(), editMode, keyPressed); } } }; @@ -785,7 +786,7 @@ public abstract class AbstractBrowserGrid<T/* Entity */, M extends BaseEntityMod { return new ISelectedEntityInvoker<M>() { - public void invoke(M selectedItem) + public void invoke(M selectedItem, boolean keyPressed) { MessageBox.alert(viewContext.getMessage(Dict.MESSAGEBOX_WARNING), viewContext .getMessage(Dict.NOT_IMPLEMENTED), null); @@ -829,7 +830,7 @@ public abstract class AbstractBrowserGrid<T/* Entity */, M extends BaseEntityMod List<M> selectedItems = getSelectedItems(); if (selectedItems.isEmpty() == false) { - invoker.invoke(selectedItems.get(0)); + invoker.invoke(selectedItems.get(0), true); } } }); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractSimpleBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractSimpleBrowserGrid.java index dc294835d42f85f67e684a8c6d02743b72f593d1..bad17c998ca0e77488adfc810fc0bcc3d5013d4d 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractSimpleBrowserGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractSimpleBrowserGrid.java @@ -70,7 +70,7 @@ abstract public class AbstractSimpleBrowserGrid<T/* Entity */> extends } @Override - protected void showEntityViewer(T entity, boolean editMode) + protected void showEntityViewer(T entity, boolean editMode, boolean active) { // do nothing } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ColumnListener.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ColumnListener.java index 6f733840a8f3a22f11f9c834e3186e38b7f95b58..1ea8ccd1ebc8fef372e77590f5c00e188fecca7e 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ColumnListener.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ColumnListener.java @@ -26,6 +26,7 @@ import com.extjs.gxt.ui.client.store.ListStore; import com.extjs.gxt.ui.client.widget.grid.Grid; import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.BaseEntityModel; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.WidgetUtils; /** * Listener for a Grid which delegates click on a cell or link in a cell to a registered @@ -59,9 +60,10 @@ public final class ColumnListener<T, M extends BaseEntityModel<T>> implements } /** - * Invokes {@link ICellListener#handle(Object)} with the base object of the row specified by the - * row index of the event. The cell listener is determined by the column index. This method does - * nothing if no cell listener has been registered for column determined by the event. + * Invokes {@link ICellListener#handle(Object,boolean)} with the base object of the row + * specified by the row index of the event. The cell listener is determined by the column index. + * This method does nothing if no cell listener has been registered for column determined by the + * event. */ @SuppressWarnings("unchecked") public void handleEvent(GridEvent be) @@ -70,7 +72,8 @@ public final class ColumnListener<T, M extends BaseEntityModel<T>> implements if (listener != null) { ListStore store = be.getGrid().getStore(); - listener.handle(((BaseEntityModel<T>) store.getAt(be.getRowIndex())).getBaseObject()); + listener.handle(((BaseEntityModel<T>) store.getAt(be.getRowIndex())).getBaseObject(), + WidgetUtils.ifSpecialKeyPressed(be.getEvent())); } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/GenericTableBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/GenericTableBrowserGrid.java index d45d556da636325df4a6c6b9781fa7a5efe18d74..ea0b17e91fb2cd95fd731574db2a132189a65283 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/GenericTableBrowserGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/GenericTableBrowserGrid.java @@ -188,7 +188,7 @@ public abstract class GenericTableBrowserGrid extends } @Override - protected void showEntityViewer(GenericTableRow entity, boolean editMode) + protected void showEntityViewer(GenericTableRow entity, boolean editMode, boolean active) { } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ICellListener.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ICellListener.java index 1033f9b725586fadf2b296067334d3ae34af6592..b21ce1562e5349c2e808869031fe1cef4496f2e5 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ICellListener.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ICellListener.java @@ -19,12 +19,12 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid; /** * Listener interface for classes which could handle event on a cell of a grid. * - * @author Franz-Josef Elmer + * @author Franz-Josef Elmer */ public interface ICellListener<T> { /** * Handles the specified item. */ - public void handle(T rowItem); + public void handle(T rowItem, boolean specialKeyPressed); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/expressions/column/GridCustomColumnGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/expressions/column/GridCustomColumnGrid.java index e2ef0b7e0eced53e5077fd6349704d75d6764726..6b31ad47ea2ea191060d2b99f766a91a1ac1f731 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/expressions/column/GridCustomColumnGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/expressions/column/GridCustomColumnGrid.java @@ -113,7 +113,8 @@ public class GridCustomColumnGrid extends AbstractSimpleBrowserGrid<GridCustomCo createSelectedItemButton(viewContext.getMessage(Dict.BUTTON_EDIT), new ISelectedEntityInvoker<BaseEntityModel<GridCustomColumn>>() { - public void invoke(BaseEntityModel<GridCustomColumn> selectedItem) + public void invoke(BaseEntityModel<GridCustomColumn> selectedItem, + boolean keyPressed) { final GridCustomColumn selected = selectedItem.getBaseObject(); createEditDialog(selected).show(); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/expressions/filter/GridCustomFilterGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/expressions/filter/GridCustomFilterGrid.java index 66a2ffee061e84836c59a7d4da49b398a6549de9..17b250e726e0efe0e506286d120babfce33ea878 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/expressions/filter/GridCustomFilterGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/expressions/filter/GridCustomFilterGrid.java @@ -109,7 +109,8 @@ public class GridCustomFilterGrid extends AbstractSimpleBrowserGrid<GridCustomFi createSelectedItemButton(viewContext.getMessage(Dict.BUTTON_EDIT), new ISelectedEntityInvoker<BaseEntityModel<GridCustomFilter>>() { - public void invoke(BaseEntityModel<GridCustomFilter> selectedItem) + public void invoke(BaseEntityModel<GridCustomFilter> selectedItem, + boolean keyPressed) { final GridCustomFilter selected = selectedItem.getBaseObject(); createEditDialog(selected).show(); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/listener/OpenEntityDetailsTabAction.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/listener/OpenEntityDetailsTabAction.java index b55004d821b138a0efc01e7da171a2747053abe5..cc5034dff67d28f9852249270e197477369ba7a0 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/listener/OpenEntityDetailsTabAction.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/listener/OpenEntityDetailsTabAction.java @@ -17,8 +17,8 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.listener; 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.DispatcherHelper; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ITabItemFactory; import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.IClientPlugin; import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.IClientPluginFactory; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IDelegatedAction; @@ -38,11 +38,20 @@ public final class OpenEntityDetailsTabAction implements IDelegatedAction private final IViewContext<?> viewContext; + private final boolean keyPressed; + public OpenEntityDetailsTabAction(IEntityInformationHolder entity, final IViewContext<?> viewContext) + { + this(entity, viewContext, false); + } + + public OpenEntityDetailsTabAction(IEntityInformationHolder entity, + final IViewContext<?> viewContext, boolean keyPressed) { this.entity = entity; this.viewContext = viewContext; + this.keyPressed = keyPressed; } public void execute() @@ -54,8 +63,9 @@ public final class OpenEntityDetailsTabAction implements IDelegatedAction entityType); final IClientPlugin<BasicEntityType, IIdentifiable> createClientPlugin = clientPluginFactory.createClientPlugin(entityKind); - final ITabItemFactory tabView = createClientPlugin.createEntityViewer(entityType, entity); - + final AbstractTabItemFactory tabView = + createClientPlugin.createEntityViewer(entityType, entity); + tabView.setInBackground(keyPressed); DispatcherHelper.dispatchNaviEvent(tabView); } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/listener/OpenEntityDetailsTabClickListener.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/listener/OpenEntityDetailsTabClickListener.java index f6a81ae88c5cb1f6326ecb61e8a663eb69c57185..dd2f1ec544d30d03f324e130416ccec0f1706ccc 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/listener/OpenEntityDetailsTabClickListener.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/listener/OpenEntityDetailsTabClickListener.java @@ -20,7 +20,7 @@ import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IDelegatedAction; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.WidgetUtils; import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolder; /** @@ -30,17 +30,21 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolder; */ public final class OpenEntityDetailsTabClickListener implements ClickHandler { - private final IDelegatedAction action; + private final IEntityInformationHolder entity; + + private final IViewContext<?> viewContext; public OpenEntityDetailsTabClickListener(IEntityInformationHolder entity, final IViewContext<?> viewContext) { super(); - this.action = new OpenEntityDetailsTabAction(entity, viewContext); + this.entity = entity; + this.viewContext = viewContext; } public void onClick(ClickEvent event) { - action.execute(); + new OpenEntityDetailsTabAction(entity, viewContext, WidgetUtils.ifSpecialKeyPressed(event + .getNativeEvent())).execute(); } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/listener/OpenEntityDetailsTabHelper.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/listener/OpenEntityDetailsTabHelper.java index fa3560f659c6e7ccecb59a89c5968eb004a2d91f..dc644bc606284e7bba600b64687897369b133b36 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/listener/OpenEntityDetailsTabHelper.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/listener/OpenEntityDetailsTabHelper.java @@ -20,11 +20,11 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAs import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict; import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ProjectViewer; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.AbstractTabItemFactory; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DatabaseModificationAwareComponent; 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.ITabItemFactory; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier.HelpPageAction; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier.HelpPageDomain; @@ -71,12 +71,14 @@ public class OpenEntityDetailsTabHelper } } - public static void open(final IViewContext<?> viewContext, final Project project) + public static void open(final IViewContext<?> viewContext, final Project project, + boolean keyPressed) { - ITabItemFactory tabFactory; + AbstractTabItemFactory tabFactory; final TechId projectId = TechId.create(project); - tabFactory = new ITabItemFactory() + tabFactory = new AbstractTabItemFactory() { + @Override public ITabItem create() { final DatabaseModificationAwareComponent viewer = @@ -84,6 +86,7 @@ public class OpenEntityDetailsTabHelper return DefaultTabItem.create(getViewerTitle(), viewer, viewContext, false); } + @Override public String getId() { return ProjectViewer.createId(projectId); @@ -94,11 +97,13 @@ public class OpenEntityDetailsTabHelper return AbstractViewer.getTitle(viewContext, Dict.PROJECT, project); } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.PROJECT, HelpPageAction.VIEW); } }; + tabFactory.setInBackground(keyPressed); DispatcherHelper.dispatchNaviEvent(tabFactory); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/material/MaterialBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/material/MaterialBrowserGrid.java index 3cde866e4c4b756f621ad1502086cfeb44eae9fd..2218b9c0d07ec501b5248432707244b72775842e 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/material/MaterialBrowserGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/material/MaterialBrowserGrid.java @@ -131,7 +131,8 @@ public class MaterialBrowserGrid extends return new MaterialBrowserGrid(viewContext, true, criteriaProvider) { @Override - protected void showEntityViewer(Material material, boolean editMode) + protected void showEntityViewer(Material material, boolean editMode, + boolean active) { // do nothing - avoid showing the details after double click } @@ -266,9 +267,9 @@ public class MaterialBrowserGrid extends } @Override - protected void showEntityViewer(Material material, boolean editMode) + protected void showEntityViewer(Material material, boolean editMode, boolean active) { - showEntityInformationHolderViewer(material, editMode); + showEntityInformationHolderViewer(material, editMode, active); } @Override diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/project/ProjectGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/project/ProjectGrid.java index ced4ead7882846c6a189c392f5c3882bb798c35c..306211ba14822e13c707b0e5c2bf5593306083e7 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/project/ProjectGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/project/ProjectGrid.java @@ -29,13 +29,13 @@ 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.ProjectViewer; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.AbstractTabItemFactory; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ComponentProvider; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DatabaseModificationAwareComponent; 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.DisplayTypeIDGenerator; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ITabItem; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ITabItemFactory; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier.HelpPageAction; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier.HelpPageDomain; @@ -108,9 +108,11 @@ public class ProjectGrid extends AbstractSimpleBrowserGrid<Project> createSelectedItemButton(viewContext.getMessage(Dict.BUTTON_SHOW_DETAILS), new ISelectedEntityInvoker<BaseEntityModel<Project>>() { - public void invoke(BaseEntityModel<Project> selectedItem) + public void invoke(BaseEntityModel<Project> selectedItem, + boolean keyPressed) { - showEntityViewer(selectedItem.getBaseObject(), false); + showEntityViewer(selectedItem.getBaseObject(), false, + keyPressed); } }); showDetailsButton.setId(SHOW_DETAILS_BUTTON_ID); @@ -120,9 +122,10 @@ public class ProjectGrid extends AbstractSimpleBrowserGrid<Project> createSelectedItemButton(viewContext.getMessage(Dict.BUTTON_EDIT), new ISelectedEntityInvoker<BaseEntityModel<Project>>() { - public void invoke(BaseEntityModel<Project> selectedItem) + public void invoke(BaseEntityModel<Project> selectedItem, + boolean keyPressed) { - showEntityViewer(selectedItem.getBaseObject(), true); + showEntityViewer(selectedItem.getBaseObject(), true, keyPressed); } }); editButton.setId(EDIT_BUTTON_ID); @@ -185,20 +188,21 @@ public class ProjectGrid extends AbstractSimpleBrowserGrid<Project> } @Override - protected void showEntityViewer(final Project project, boolean editMode) + protected void showEntityViewer(final Project project, boolean editMode, boolean inBackground) { - showEntityViewer(project, editMode, viewContext); + showEntityViewer(project, editMode, viewContext, inBackground); } public static void showEntityViewer(final Project project, boolean editMode, - final IViewContext<ICommonClientServiceAsync> viewContext) + final IViewContext<ICommonClientServiceAsync> viewContext, boolean inBackground) { - ITabItemFactory tabFactory; + AbstractTabItemFactory tabFactory; final TechId projectId = TechId.create(project); if (editMode == false) { - tabFactory = new ITabItemFactory() + tabFactory = new AbstractTabItemFactory() { + @Override public ITabItem create() { final DatabaseModificationAwareComponent viewer = @@ -206,6 +210,7 @@ public class ProjectGrid extends AbstractSimpleBrowserGrid<Project> return DefaultTabItem.create(getViewerTitle(), viewer, viewContext, false); } + @Override public String getId() { return ProjectViewer.createId(projectId); @@ -216,6 +221,7 @@ public class ProjectGrid extends AbstractSimpleBrowserGrid<Project> return AbstractViewer.getTitle(viewContext, Dict.PROJECT, project); } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.PROJECT, HelpPageAction.VIEW); @@ -223,8 +229,9 @@ public class ProjectGrid extends AbstractSimpleBrowserGrid<Project> }; } else { - tabFactory = new ITabItemFactory() + tabFactory = new AbstractTabItemFactory() { + @Override public ITabItem create() { DatabaseModificationAwareComponent component = @@ -232,6 +239,7 @@ public class ProjectGrid extends AbstractSimpleBrowserGrid<Project> return DefaultTabItem.create(getEditTitle(), component, viewContext, true); } + @Override public String getId() { return ProjectEditForm.createId(projectId); @@ -243,12 +251,14 @@ public class ProjectGrid extends AbstractSimpleBrowserGrid<Project> project); } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.PROJECT, HelpPageAction.EDIT); } }; } + tabFactory.setInBackground(inBackground); DispatcherHelper.dispatchNaviEvent(tabFactory); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeAssignmentGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeAssignmentGrid.java index 88fb857634ae4fe9b144e403a9ba4e1d359a0a72..a56f2ccce81756563e7d35f6a85fff5d002123b3 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeAssignmentGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeAssignmentGrid.java @@ -201,7 +201,8 @@ public class PropertyTypeAssignmentGrid extends new ISelectedEntityInvoker<BaseEntityModel<EntityTypePropertyType<?>>>() { - public void invoke(BaseEntityModel<EntityTypePropertyType<?>> selectedItem) + public void invoke(BaseEntityModel<EntityTypePropertyType<?>> selectedItem, + boolean keyPressed) { final EntityTypePropertyType<?> etpt = selectedItem.getBaseObject(); if (etpt.isManagedInternally()) @@ -218,7 +219,8 @@ public class PropertyTypeAssignmentGrid extends addButton(createSelectedItemButton(viewContext.getMessage(Dict.UNASSIGN_BUTTON_LABEL), new ISelectedEntityInvoker<BaseEntityModel<EntityTypePropertyType<?>>>() { - public void invoke(BaseEntityModel<EntityTypePropertyType<?>> selectedItem) + public void invoke(BaseEntityModel<EntityTypePropertyType<?>> selectedItem, + boolean keyPressed) { final EntityTypePropertyType<?> etpt = selectedItem.getBaseObject(); unassignPropertyType(etpt); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeGrid.java index d474e3f504504a99707c33d5ca5de48223f351fe..f6d32f5f64e62e6b003624abf9354e0d4848d60e 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeGrid.java @@ -106,7 +106,8 @@ public class PropertyTypeGrid extends AbstractSimpleBrowserGrid<PropertyType> new ISelectedEntityInvoker<BaseEntityModel<PropertyType>>() { - public void invoke(BaseEntityModel<PropertyType> selectedItem) + public void invoke(BaseEntityModel<PropertyType> selectedItem, + boolean keyPressed) { final PropertyType propertyType = selectedItem.getBaseObject(); if (propertyType.isManagedInternally()) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/report/ReportGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/report/ReportGrid.java index fa81593b04287de8f849ec40a888952df4458a35..9cf59c6e7edb5160cd18ac75ac89344efc0a7cb6 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/report/ReportGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/report/ReportGrid.java @@ -85,8 +85,9 @@ public class ReportGrid extends AbstractBrowserGrid<TableModelRow, BaseEntityMod public static class ReportColumnUI extends DataSetReportColumnDefinition implements IColumnDefinitionUI<TableModelRow> { - private boolean isHidden; - private int defaultColumnWidth; + private final boolean isHidden; + + private final int defaultColumnWidth; public ReportColumnUI(TableModelColumnHeader columnHeader, String downloadURL, String sessionID, int defaultColumnWidth, boolean isHidden) @@ -207,7 +208,7 @@ public class ReportGrid extends AbstractBrowserGrid<TableModelRow, BaseEntityMod } @Override - protected void showEntityViewer(TableModelRow entity, boolean editMode) + protected void showEntityViewer(TableModelRow entity, boolean editMode, boolean active) { // do nothing } @@ -238,7 +239,7 @@ public class ReportGrid extends AbstractBrowserGrid<TableModelRow, BaseEntityMod registerLinkClickListenerFor(colDefinition.getIdentifier(), new ICellListener<TableModelRow>() { - public void handle(TableModelRow rowItem) + public void handle(TableModelRow rowItem, boolean keyPressed) { ISerializableComparable cellValue = rowItem.getValues().get(colIndex); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserGrid.java index f19e1de9a84b2fd2d70a55949b515e34ce6c7466..d6adf0de608f8d398ef7b4e4a6abfa68487aded5 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserGrid.java @@ -110,7 +110,8 @@ public class SampleBrowserGrid extends DisplayTypeIDGenerator.ENTITY_BROWSER_GRID) { @Override - protected void showEntityViewer(Sample sample, boolean editMode) + protected void showEntityViewer(Sample sample, boolean editMode, + boolean active) { // do nothing - avoid showing the details after double click } @@ -318,10 +319,10 @@ public class SampleBrowserGrid extends registerLinkClickListenerFor(CommonSampleColDefKind.PROJECT.id(), new ICellListener<Sample>() { - public void handle(Sample rowItem) + public void handle(Sample rowItem, boolean keyPressed) { OpenEntityDetailsTabHelper.open(viewContext, rowItem.getExperiment() - .getProject()); + .getProject(), keyPressed); } }); setId(browserId); @@ -331,12 +332,12 @@ public class SampleBrowserGrid extends { protected abstract IEntityInformationHolder getEntity(Sample rowItem); - public final void handle(Sample rowItem) + public final void handle(Sample rowItem, boolean keyPressed) { // don't need to check whether the value is null // because there will not be a link for null value final IEntityInformationHolder entity = getEntity(rowItem); - new OpenEntityDetailsTabAction(entity, viewContext).execute(); + new OpenEntityDetailsTabAction(entity, viewContext, keyPressed).execute(); } } @@ -473,9 +474,9 @@ public class SampleBrowserGrid extends } @Override - protected void showEntityViewer(Sample sample, boolean editMode) + protected void showEntityViewer(Sample sample, boolean editMode, boolean active) { - showEntityInformationHolderViewer(sample, editMode); + showEntityInformationHolderViewer(sample, editMode, active); } @Override diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/vocabulary/VocabularyGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/vocabulary/VocabularyGrid.java index eae4bb2a9716b40cf6e010197b8fb042c75d8dfc..da26f99e68b77f2633e6ae7cb427fd033dafdff1 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/vocabulary/VocabularyGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/vocabulary/VocabularyGrid.java @@ -33,12 +33,12 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAs 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.ComponentProvider; 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.DisplayTypeIDGenerator; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ITabItem; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ITabItemFactory; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier.HelpPageAction; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier.HelpPageDomain; @@ -109,9 +109,11 @@ public class VocabularyGrid extends AbstractSimpleBrowserGrid<Vocabulary> createSelectedItemButton(viewContext.getMessage(Dict.BUTTON_SHOW_DETAILS), new ISelectedEntityInvoker<BaseEntityModel<Vocabulary>>() { - public void invoke(BaseEntityModel<Vocabulary> selectedItem) + public void invoke(BaseEntityModel<Vocabulary> selectedItem, + boolean keyPressed) { - showEntityViewer(selectedItem.getBaseObject(), false); + showEntityViewer(selectedItem.getBaseObject(), false, + keyPressed); } }); showDetailsButton.setId(SHOW_DETAILS_BUTTON_ID); @@ -121,7 +123,8 @@ public class VocabularyGrid extends AbstractSimpleBrowserGrid<Vocabulary> new ISelectedEntityInvoker<BaseEntityModel<Vocabulary>>() { - public void invoke(BaseEntityModel<Vocabulary> selectedItem) + public void invoke(BaseEntityModel<Vocabulary> selectedItem, + boolean keyPressed) { Vocabulary vocabulary = selectedItem.getBaseObject(); if (vocabulary.isManagedInternally()) @@ -214,10 +217,12 @@ public class VocabularyGrid extends AbstractSimpleBrowserGrid<Vocabulary> } @Override - protected void showEntityViewer(final Vocabulary vocabulary, boolean editMode) + protected void showEntityViewer(final Vocabulary vocabulary, boolean editMode, + boolean inBackground) { - final ITabItemFactory tabFactory = new ITabItemFactory() + final AbstractTabItemFactory tabFactory = new AbstractTabItemFactory() { + @Override public ITabItem create() { IDisposableComponent component = @@ -228,16 +233,19 @@ public class VocabularyGrid extends AbstractSimpleBrowserGrid<Vocabulary> return DefaultTabItem.create(tabTitle, component, viewContext); } + @Override public String getId() { return VocabularyTermGrid.createBrowserId(vocabulary); } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.TERM, HelpPageAction.BROWSE); } }; + tabFactory.setInBackground(inBackground); DispatcherHelper.dispatchNaviEvent(tabFactory); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/vocabulary/VocabularyTermGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/vocabulary/VocabularyTermGrid.java index 92f8bde3181aecf9a958e10478cd811915407e88..fdff3ff5ebfd7ac3e650a40527a6f761a2559c5b 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/vocabulary/VocabularyTermGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/vocabulary/VocabularyTermGrid.java @@ -169,7 +169,8 @@ public class VocabularyTermGrid extends AbstractSimpleBrowserGrid<VocabularyTerm { public void invoke( - BaseEntityModel<VocabularyTermWithStats> selectedItem) + BaseEntityModel<VocabularyTermWithStats> selectedItem, + boolean keyPressed) { final VocabularyTermWithStats term = selectedItem.getBaseObject(); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/util/WidgetUtils.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/util/WidgetUtils.java index d78a6c75ed41a1623b22b43e61a6435ecaae22a2..77d8ba13754950550ac0cf6d9f310a1f63efa54d 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/util/WidgetUtils.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/util/WidgetUtils.java @@ -22,6 +22,7 @@ import com.extjs.gxt.ui.client.event.Events; import com.extjs.gxt.ui.client.event.Listener; import com.extjs.gxt.ui.client.widget.form.Radio; import com.extjs.gxt.ui.client.widget.form.RadioGroup; +import com.google.gwt.dom.client.NativeEvent; /** * Utility methods for widgets. @@ -81,4 +82,20 @@ public class WidgetUtils } } + /** + * Returns true and stops event propagation and default behavior if the special key is pressed. + */ + public static final boolean ifSpecialKeyPressed(NativeEvent e) + { + // Note: using getMetaKey() would allow using Apple Key (Windows Key), but then + // preventDefault() might not work in all browsers + boolean result = e.getAltKey(); + if (result) + { + e.stopPropagation(); + e.preventDefault(); + } + return result; + } + } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/demo/client/web/client/application/ClientPluginFactory.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/demo/client/web/client/application/ClientPluginFactory.java index 7dad90d9dafe48b9fafe81db5d713dbcc415bd1f..b431b59b2f161811a005d5afcf297ac7826a0352 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/demo/client/web/client/application/ClientPluginFactory.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/demo/client/web/client/application/ClientPluginFactory.java @@ -29,7 +29,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework. import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DefaultTabItem; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DummyComponent; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ITabItem; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ITabItemFactory; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.AbstractTabItemFactory; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier.HelpPageAction; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier.HelpPageDomain; @@ -112,12 +112,13 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<DemoV // IViewClientPlugin // - public final ITabItemFactory createEntityViewer(final SampleType sampleType, + public final AbstractTabItemFactory createEntityViewer(final SampleType sampleType, final IIdentifiable identifiable) { final TechId sampleId = TechId.create(identifiable); - return new ITabItemFactory() + return new AbstractTabItemFactory() { + @Override public ITabItem create() { final DemoSampleViewer sampleViewer = @@ -126,11 +127,13 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<DemoV false); } + @Override public String getId() { return DemoSampleViewer.createId(sampleId); } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.SAMPLE, HelpPageAction.VIEW); @@ -157,21 +160,24 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<DemoV return new DummyComponent(); } - public ITabItemFactory createEntityEditor(final SampleType sampleType, + public AbstractTabItemFactory createEntityEditor(final SampleType sampleType, final IIdentifiable identifiable) { - return new ITabItemFactory() + return new AbstractTabItemFactory() { + @Override public ITabItem create() { return createDummyTab(identifiable.getCode()); } + @Override public String getId() { return DummyComponent.ID; } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.SAMPLE, HelpPageAction.EDIT); @@ -190,21 +196,24 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<DemoV // @Override - public final ITabItemFactory createEntityViewer(final ExperimentType experimentType, + public final AbstractTabItemFactory createEntityViewer(final ExperimentType experimentType, final IIdentifiable identifiable) { - return new ITabItemFactory() + return new AbstractTabItemFactory() { + @Override public ITabItem create() { return createDummyTab(identifiable.getCode()); } + @Override public String getId() { return DummyComponent.ID; } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.EXPERIMENT, diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/demo/client/web/client/application/module/TopMenuItemDemoModuleMenu.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/demo/client/web/client/application/module/TopMenuItemDemoModuleMenu.java index 4e118449f3523539c799b5513ba6cfc47a8d03a6..6090f471ebeb47ed814db6841f9eada3fadd46ff 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/demo/client/web/client/application/module/TopMenuItemDemoModuleMenu.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/demo/client/web/client/application/module/TopMenuItemDemoModuleMenu.java @@ -23,7 +23,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericCon import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DefaultTabItem; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ITabItem; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ITabItemFactory; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.AbstractTabItemFactory; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier; import ch.systemsx.cisd.openbis.generic.client.web.client.application.menu.ActionMenu; import ch.systemsx.cisd.openbis.generic.client.web.client.application.menu.IActionMenuItem; @@ -40,7 +40,7 @@ public class TopMenuItemDemoModuleMenu extends MenuItem { public static final String ID = GenericConstants.ID_PREFIX; - private final class ExperimentStatisticsTabItemFactory implements ITabItemFactory + private final class ExperimentStatisticsTabItemFactory extends AbstractTabItemFactory { private final IViewContext<IDemoClientServiceAsync> viewContext; @@ -49,17 +49,20 @@ public class TopMenuItemDemoModuleMenu extends MenuItem this.viewContext = viewContext; } + @Override public ITabItem create() { return DefaultTabItem.create(viewContext.getMessage(Dict.STATISTICS_DEMO_TAB_HEADER), StatisticsWidget.create(viewContext), viewContext, false); } + @Override public String getId() { return StatisticsWidget.ID; } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return HelpPageIdentifier.createSpecific("Experiment Statistics"); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/ClientPluginFactory.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/ClientPluginFactory.java index 80a1d45d5319219331dab0e52eb136ace49cd3b8..af06b82b93fe05486607db952bd889847fe7a04c 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/ClientPluginFactory.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/ClientPluginFactory.java @@ -28,7 +28,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework. import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DatabaseModificationAwareWidget; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DefaultTabItem; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ITabItem; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ITabItemFactory; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.AbstractTabItemFactory; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier.HelpPageAction; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier.HelpPageDomain; @@ -139,11 +139,12 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Gener // IViewClientPlugin // - public ITabItemFactory createEntityViewer(final SampleType sampleType, + public AbstractTabItemFactory createEntityViewer(final SampleType sampleType, final IIdentifiable identifiable) { - return new ITabItemFactory() + return new AbstractTabItemFactory() { + @Override public ITabItem create() { final DatabaseModificationAwareComponent sampleViewer = @@ -152,11 +153,13 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Gener sampleViewer, getViewContext(), false); } + @Override public String getId() { return GenericSampleViewer.createId(identifiable); } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.SAMPLE, HelpPageAction.VIEW); @@ -182,11 +185,12 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Gener return new GenericSampleBatchUpdateForm(getViewContext(), sampleType); } - public ITabItemFactory createEntityEditor(final SampleType sampleType, + public AbstractTabItemFactory createEntityEditor(final SampleType sampleType, final IIdentifiable identifiable) { - return new ITabItemFactory() + return new AbstractTabItemFactory() { + @Override public ITabItem create() { DatabaseModificationAwareComponent component = @@ -195,11 +199,13 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Gener return DefaultTabItem.create(title, component, getViewContext(), true); } + @Override public String getId() { return GenericSampleEditForm.createId(identifiable, EntityKind.SAMPLE); } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.SAMPLE, HelpPageAction.EDIT); @@ -220,12 +226,13 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Gener } @Override - public final ITabItemFactory createEntityViewer(final MaterialType materialType, + public final AbstractTabItemFactory createEntityViewer(final MaterialType materialType, final IIdentifiable identifiable) { final TechId techId = TechId.create(identifiable); - return new ITabItemFactory() + return new AbstractTabItemFactory() { + @Override public ITabItem create() { final DatabaseModificationAwareComponent materialViewer = @@ -234,11 +241,13 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Gener materialViewer, getViewContext(), false); } + @Override public String getId() { return GenericMaterialViewer.createId(techId); } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.MATERIAL, HelpPageAction.VIEW); @@ -247,11 +256,12 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Gener } @Override - public ITabItemFactory createEntityEditor(final MaterialType materialType, + public AbstractTabItemFactory createEntityEditor(final MaterialType materialType, final IIdentifiable identifiable) { - return new ITabItemFactory() + return new AbstractTabItemFactory() { + @Override public ITabItem create() { DatabaseModificationAwareComponent component = @@ -261,11 +271,13 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Gener return DefaultTabItem.create(title, component, getViewContext(), true); } + @Override public String getId() { return GenericMaterialEditForm.createId(identifiable, EntityKind.MATERIAL); } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.MATERIAL, HelpPageAction.EDIT); @@ -283,11 +295,12 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Gener // @Override - public final ITabItemFactory createEntityViewer(final ExperimentType experimentType, + public final AbstractTabItemFactory createEntityViewer(final ExperimentType experimentType, final IIdentifiable experimentId) { - return new ITabItemFactory() + return new AbstractTabItemFactory() { + @Override public ITabItem create() { final DatabaseModificationAwareComponent experimentViewer = @@ -297,11 +310,13 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Gener experimentViewer, getViewContext(), false); } + @Override public String getId() { return GenericExperimentViewer.createId(experimentId); } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.EXPERIMENT, @@ -320,11 +335,12 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Gener } @Override - public ITabItemFactory createEntityEditor(final ExperimentType entityType, + public AbstractTabItemFactory createEntityEditor(final ExperimentType entityType, final IIdentifiable identifiable) { - return new ITabItemFactory() + return new AbstractTabItemFactory() { + @Override public ITabItem create() { DatabaseModificationAwareComponent component = @@ -333,12 +349,14 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Gener return DefaultTabItem.create(title, component, getViewContext(), true); } + @Override public String getId() { return GenericExperimentEditForm.createId(identifiable, EntityKind.EXPERIMENT); } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.EXPERIMENT, @@ -352,11 +370,12 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Gener { @Override - public final ITabItemFactory createEntityViewer(final DataSetType dataSetType, + public final AbstractTabItemFactory createEntityViewer(final DataSetType dataSetType, final IIdentifiable identifiable) { - return new ITabItemFactory() + return new AbstractTabItemFactory() { + @Override public ITabItem create() { final DatabaseModificationAwareComponent dataSetViewer = @@ -365,11 +384,13 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Gener dataSetViewer, getViewContext(), false); } + @Override public String getId() { return GenericDataSetViewer.createId(identifiable); } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.DATA_SET, HelpPageAction.VIEW); @@ -378,11 +399,12 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Gener } @Override - public ITabItemFactory createEntityEditor(final DataSetType dataSetType, + public AbstractTabItemFactory createEntityEditor(final DataSetType dataSetType, final IIdentifiable identifiable) { - return new ITabItemFactory() + return new AbstractTabItemFactory() { + @Override public ITabItem create() { DatabaseModificationAwareComponent component = @@ -391,11 +413,13 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Gener return DefaultTabItem.create(title, component, getViewContext(), true); } + @Override public String getId() { return GenericDataSetEditForm.createId(identifiable, EntityKind.DATA_SET); } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.DATA_SET, HelpPageAction.EDIT); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/client/web/client/application/locator/QueryLocatorResolver.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/client/web/client/application/locator/QueryLocatorResolver.java index 861bd33c455967bf41f13a1dde2c0f1740addc5d..3442a88b92472b3ab68d17afc34e0c3480ed66aa 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/client/web/client/application/locator/QueryLocatorResolver.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/client/web/client/application/locator/QueryLocatorResolver.java @@ -1,11 +1,11 @@ package ch.systemsx.cisd.openbis.plugin.query.client.web.client.application.locator; 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.DatabaseModificationAwareComponent; 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.ITabItemFactory; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier; import ch.systemsx.cisd.openbis.generic.client.web.client.application.locator.AbstractViewLocatorResolver; import ch.systemsx.cisd.openbis.generic.client.web.client.application.locator.IViewLocatorResolver; @@ -51,19 +51,22 @@ public class QueryLocatorResolver extends AbstractViewLocatorResolver final ITabActionMenuItemDefinition<IQueryClientServiceAsync> definition = ActionMenuDefinition.RUN_CANNED_QUERY; final String tabLabelKey = definition.getName() + "_tab_label"; - final ITabItemFactory tabItemFactory = new ITabItemFactory() + final AbstractTabItemFactory tabItemFactory = new AbstractTabItemFactory() { + @Override public String getId() { return QueryModuleDatabaseMenuItem.ID + "_" + tabLabelKey; } + @Override public ITabItem create() { String tabItemText = viewContext.getMessage(tabLabelKey); return DefaultTabItem.create(tabItemText, component, viewContext, false); } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return HelpPageIdentifier.createSpecific(definition.getHelpPageTitle()); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/client/web/client/application/module/QueryBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/client/web/client/application/module/QueryBrowserGrid.java index 211a6912573a0bbc88f6672eb006fcf539328cda..8fdb2b9dfba31b613f28c1e7e4eeb8eda2854ab4 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/client/web/client/application/module/QueryBrowserGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/client/web/client/application/module/QueryBrowserGrid.java @@ -137,7 +137,8 @@ public class QueryBrowserGrid extends AbstractSimpleBrowserGrid<QueryExpression> createSelectedItemButton(viewContext.getMessage(Dict.BUTTON_EDIT), new ISelectedEntityInvoker<BaseEntityModel<QueryExpression>>() { - public void invoke(BaseEntityModel<QueryExpression> selectedItem) + public void invoke(BaseEntityModel<QueryExpression> selectedItem, + boolean keyPressed) { QueryExpression query = selectedItem.getBaseObject(); new QueryEditor(viewContext, query, createRefreshGridAction(), diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ClientPluginFactory.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ClientPluginFactory.java index bf5090f49095cdf6b3edaeb068e7b97f852767a3..626e46220c8a28ec06461efbdd2d70524eb73798 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ClientPluginFactory.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ClientPluginFactory.java @@ -27,7 +27,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework. import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DatabaseModificationAwareWidget; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DefaultTabItem; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ITabItem; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ITabItemFactory; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.AbstractTabItemFactory; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier.HelpPageAction; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier.HelpPageDomain; @@ -103,11 +103,12 @@ public class ClientPluginFactory extends AbstractClientPluginFactory<ViewContext // @Override - public final ITabItemFactory createEntityViewer(final ExperimentType experimentType, + public final AbstractTabItemFactory createEntityViewer(final ExperimentType experimentType, final IIdentifiable identifiable) { - return new ITabItemFactory() + return new AbstractTabItemFactory() { + @Override public ITabItem create() { final DatabaseModificationAwareComponent experimentViewer = @@ -117,11 +118,13 @@ public class ClientPluginFactory extends AbstractClientPluginFactory<ViewContext experimentViewer, getViewContext(), false); } + @Override public String getId() { return GenericExperimentViewer.createId(identifiable); } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.EXPERIMENT, @@ -140,11 +143,12 @@ public class ClientPluginFactory extends AbstractClientPluginFactory<ViewContext } @Override - public ITabItemFactory createEntityEditor(final ExperimentType experimentType, + public AbstractTabItemFactory createEntityEditor(final ExperimentType experimentType, final IIdentifiable identifiable) { - return new ITabItemFactory() + return new AbstractTabItemFactory() { + @Override public ITabItem create() { DatabaseModificationAwareComponent component = @@ -154,12 +158,14 @@ public class ClientPluginFactory extends AbstractClientPluginFactory<ViewContext return DefaultTabItem.create(title, component, getViewContext(), true); } + @Override public String getId() { return GenericExperimentEditForm.createId(identifiable, EntityKind.EXPERIMENT); } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.EXPERIMENT, diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ProteinByExperimentBrowserGrid.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ProteinByExperimentBrowserGrid.java index d3c6ee35ee94b2c149f5c0aa79cdeb58b9427d80..7cd4e98f61576e21fc73e3b1f5841d351f85b106 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ProteinByExperimentBrowserGrid.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ProteinByExperimentBrowserGrid.java @@ -33,6 +33,7 @@ import com.extjs.gxt.ui.client.widget.layout.RowLayout; import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback; 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.DispatcherHelper; import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.BaseEntityModel; import ch.systemsx.cisd.openbis.generic.client.web.client.application.renderer.LinkRenderer; @@ -93,7 +94,7 @@ class ProteinByExperimentBrowserGrid extends AbstractSimpleBrowserGrid<ProteinIn { } }; - + static IDisposableComponent create( final IViewContext<IPhosphoNetXClientServiceAsync> viewContext, ExperimentType experimentType, IIdentifiable experimentId) @@ -148,9 +149,10 @@ class ProteinByExperimentBrowserGrid extends AbstractSimpleBrowserGrid<ProteinIn tabItem.add(component); return tabItem; } - + private ProteinByExperimentBrowserGrid( - final IViewContext<IPhosphoNetXClientServiceAsync> viewContext, IIdentifiable experimentId) + final IViewContext<IPhosphoNetXClientServiceAsync> viewContext, + IIdentifiable experimentId) { super(viewContext.getCommonViewContext(), BROWSER_ID, GRID_ID, false, PhosphoNetXDisplayTypeIDGenerator.PROTEIN_BY_EXPERIMENT_BROWSER_GRID); @@ -160,14 +162,17 @@ class ProteinByExperimentBrowserGrid extends AbstractSimpleBrowserGrid<ProteinIn registerLinkClickListenerFor(ProteinColDefKind.ACCESSION_NUMBER.id(), new ICellListener<ProteinInfo>() { - public void handle(ProteinInfo rowItem) + public void handle(ProteinInfo rowItem, boolean keyPressed) { - DispatcherHelper.dispatchNaviEvent(ProteinViewer.createTabItemFactory( - viewContext, toolbar.getExperimentOrNull(), rowItem)); + AbstractTabItemFactory tabItemFactory = + ProteinViewer.createTabItemFactory(viewContext, toolbar + .getExperimentOrNull(), rowItem); + tabItemFactory.setInBackground(keyPressed); + DispatcherHelper.dispatchNaviEvent(tabItemFactory); } }); } - + void update(TechId experimentID, double falseDiscoveryRate, AggregateFunction aggregateFunction, String treatmentTypeCode, boolean aggregateOriginal, List<AbundanceColumnDefinition> definitions) @@ -181,7 +186,7 @@ class ProteinByExperimentBrowserGrid extends AbstractSimpleBrowserGrid<ProteinIn abundanceColumnDefinitions = definitions; refresh(postRefreshCallback, true); } - + void setPostRefreshCallback(IDataRefreshCallback postRefreshCallback) { this.postRefreshCallback = postRefreshCallback; diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ProteinViewer.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ProteinViewer.java index c8b0f0cb8124ecef536c64fc29060aa5da5ed959..7cf47d189f466e7e43db6b624c2530e71ef6099d 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ProteinViewer.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ProteinViewer.java @@ -37,7 +37,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework. import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DefaultTabItem; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.IDatabaseModificationObserver; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ITabItem; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ITabItemFactory; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.AbstractTabItemFactory; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.AbstractViewer; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IDisposableComponent; @@ -72,17 +72,19 @@ public class ProteinViewer extends AbstractViewer<IEntityInformationHolder> impl public static final String ID_PREFIX = GenericConstants.ID_PREFIX + PREFIX; - static ITabItemFactory createTabItemFactory( + static AbstractTabItemFactory createTabItemFactory( final IViewContext<IPhosphoNetXClientServiceAsync> viewContext, final IIdentifiable experimentId, final ProteinInfo proteinInfo) { - return new ITabItemFactory() + return new AbstractTabItemFactory() { + @Override public String getId() { return createWidgetID(experimentId, proteinInfo.getId()); } + @Override public ITabItem create() { ProteinViewer viewer = @@ -96,6 +98,7 @@ public class ProteinViewer extends AbstractViewer<IEntityInformationHolder> impl viewContext, false); } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return HelpPageIdentifier.createSpecific("Protein Viewer"); diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/RawDataSampleGrid.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/RawDataSampleGrid.java index 5ca62f5cc36ea3ff0bf532a19b06a1f5bbb89595..7f03a8aabf0e4ec9e9de0af4be44613e93ad6de5 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/RawDataSampleGrid.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/RawDataSampleGrid.java @@ -69,9 +69,9 @@ class RawDataSampleGrid extends GenericTableBrowserGrid specificViewContext = viewContext; registerLinkClickListenerFor("CODE", new ICellListener<GenericTableRow>() { - public void handle(GenericTableRow rowItem) + public void handle(GenericTableRow rowItem, boolean keyPressed) { - showEntityViewer(rowItem, false); + showEntityViewer(rowItem, false, keyPressed); } }); allowMultipleSelection(); @@ -113,7 +113,7 @@ class RawDataSampleGrid extends GenericTableBrowserGrid } @Override - protected void showEntityViewer(final GenericTableRow entity, boolean editMode) + protected void showEntityViewer(final GenericTableRow entity, boolean editMode, boolean active) { showEntityInformationHolderViewer(new IEntityInformationHolder() { @@ -139,6 +139,6 @@ class RawDataSampleGrid extends GenericTableBrowserGrid { return EntityKind.SAMPLE; } - }, editMode); + }, editMode, active); } } diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/SampleAbundanceBrowserGrid.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/SampleAbundanceBrowserGrid.java index 157e5320fdb672764b000df573e413ebef532ff2..a87ab050daaf5a98002b7f95fef193e20ff8071e 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/SampleAbundanceBrowserGrid.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/SampleAbundanceBrowserGrid.java @@ -286,9 +286,10 @@ public class SampleAbundanceBrowserGrid } @Override - protected void showEntityViewer(SampleWithPropertiesAndAbundance sample, boolean editMode) + protected void showEntityViewer(SampleWithPropertiesAndAbundance sample, boolean editMode, + boolean active) { - showEntityInformationHolderViewer(sample, editMode); + showEntityInformationHolderViewer(sample, editMode, active); } @Override diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/ClientPluginFactory.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/ClientPluginFactory.java index 3b5bce833644d73d374fb028cb5c8971a313542a..fdf796edb97258820a159528e5545d4a9add4f6c 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/ClientPluginFactory.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/ClientPluginFactory.java @@ -24,12 +24,12 @@ import com.google.gwt.user.client.ui.Widget; import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync; import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractClientPluginFactory; 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.DatabaseModificationAwareComponent; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DatabaseModificationAwareWidget; 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.ITabItemFactory; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier; import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.IClientPlugin; import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.IClientPluginFactory; @@ -132,7 +132,7 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Scree } @Override - public final ITabItemFactory createEntityViewer(final MaterialType materialType, + public final AbstractTabItemFactory createEntityViewer(final MaterialType materialType, final IIdentifiable materialId) { return createGeneMaterialViewerTabFactory(materialId, null, getViewContext()); @@ -144,17 +144,19 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Scree final ExperimentIdentifier experimentIdentifier, final IViewContext<IScreeningClientServiceAsync> viewContext) { - ITabItemFactory tab = + AbstractTabItemFactory tab = createGeneMaterialViewerTabFactory(materialId, experimentIdentifier, viewContext); + // DispatcherHelper.dispatchNaviEvent(tab); } - private static final ITabItemFactory createGeneMaterialViewerTabFactory( + private static final AbstractTabItemFactory createGeneMaterialViewerTabFactory( final IIdentifiable materialId, final ExperimentIdentifier experimentIdentifierOrNull, final IViewContext<IScreeningClientServiceAsync> viewContext) { - return new ITabItemFactory() + return new AbstractTabItemFactory() { + @Override public ITabItem create() { final DatabaseModificationAwareComponent viewer = @@ -163,11 +165,13 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Scree return createMaterialViewerTab(materialId, viewer, viewContext); } + @Override public String getId() { return GeneMaterialViewer.createId(materialId); } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return GeneMaterialViewer.getHelpPageIdentifier(); @@ -192,11 +196,12 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Scree } @Override - public final ITabItemFactory createEntityViewer(final DataSetType dataSetType, + public final AbstractTabItemFactory createEntityViewer(final DataSetType dataSetType, final IIdentifiable identifiable) { - return new ITabItemFactory() + return new AbstractTabItemFactory() { + @Override public ITabItem create() { final DatabaseModificationAwareComponent viewer = @@ -205,12 +210,14 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Scree screeningViewContext); } + @Override public String getId() { final TechId sampleId = TechId.create(identifiable); return PlateDatasetViewer.createId(sampleId); } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return HelpPageIdentifier.createSpecific("Plate Dataset Viewer"); @@ -230,11 +237,12 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Scree } @Override - public final ITabItemFactory createEntityViewer(final SampleType sampleType, + public final AbstractTabItemFactory createEntityViewer(final SampleType sampleType, final IIdentifiable identifiable) { - return new ITabItemFactory() + return new AbstractTabItemFactory() { + @Override public ITabItem create() { final DatabaseModificationAwareComponent viewer = @@ -243,12 +251,14 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Scree screeningViewContext); } + @Override public String getId() { final TechId sampleId = TechId.create(identifiable); return PlateSampleViewer.createId(sampleId); } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return HelpPageIdentifier.createSpecific("Plate Sample Viewer"); @@ -305,7 +315,7 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Scree return clientPluginFactory; } - public ITabItemFactory createEntityViewer(final T entityType, + public AbstractTabItemFactory createEntityViewer(final T entityType, final IIdentifiable identifiable) { return delegator.createEntityViewer(entityType, identifiable); @@ -321,7 +331,7 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Scree return delegator.createBatchUpdateForEntityType(entityType); } - public ITabItemFactory createEntityEditor(final T entityType, + public AbstractTabItemFactory createEntityEditor(final T entityType, final IIdentifiable identifiable) { return delegator.createEntityEditor(entityType, identifiable); diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/PlateLayouter.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/PlateLayouter.java index 3ef47c606c7e126be6ab9e51a7e2d66a8198f7c1..d140ace6a476d5d85c45f24d64c8e84cade56c80 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/PlateLayouter.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/PlateLayouter.java @@ -37,10 +37,10 @@ import com.google.gwt.user.client.ui.Widget; 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.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.ITabItemFactory; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier.HelpPageAction; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier.HelpPageDomain; @@ -330,10 +330,11 @@ public class PlateLayouter DispatcherHelper.dispatchNaviEvent(createPlateMetadataTabFactory()); } - private ITabItemFactory createPlateMetadataTabFactory() + private AbstractTabItemFactory createPlateMetadataTabFactory() { - return new ITabItemFactory() + return new AbstractTabItemFactory() { + @Override public ITabItem create() { return DefaultTabItem.create("Plate Report: " + plate.getCode(), @@ -341,12 +342,14 @@ public class PlateLayouter .getId())), viewContext); } + @Override public String getId() { return GenericConstants.ID_PREFIX + "plate-metadata-" + plate.getId(); } + @Override public HelpPageIdentifier getHelpPageIdentifier() { return new HelpPageIdentifier(HelpPageDomain.SAMPLE, diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/PlateMetadataBrowser.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/PlateMetadataBrowser.java index b3ccd2ffa39af69dd8da732c279076b387eb9a14..3e4cf96024e37bfa5aae5f9883a6db4941f86723 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/PlateMetadataBrowser.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/PlateMetadataBrowser.java @@ -74,32 +74,32 @@ class PlateMetadataBrowser extends GenericTableBrowserGrid registerLinkClickListenerFor(PlateMetadataStaticColumns.WELL.colId(), new ICellListener<GenericTableRow>() { - public void handle(GenericTableRow rowItem) + public void handle(GenericTableRow rowItem, boolean keyPressed) { - showEntityViewer(rowItem, false); + showEntityViewer(rowItem, false, keyPressed); } }); registerLinkClickListenerFor(PlateMetadataStaticColumns.CONTENT.colId(), new ICellListener<GenericTableRow>() { - public void handle(GenericTableRow rowItem) + public void handle(GenericTableRow rowItem, boolean keyPressed) { - showMaterialViewer(rowItem, false); + showMaterialViewer(rowItem, false, keyPressed); } }); registerLinkClickListenerFor(PlateMetadataStaticColumns.INHIBITED_GENE.colId(), new ICellListener<GenericTableRow>() { - public void handle(GenericTableRow rowItem) + public void handle(GenericTableRow rowItem, boolean keyPressed) { - showGeneViewer(rowItem, false); + showGeneViewer(rowItem, false, keyPressed); } }); registerLinkClickListenerFor(PlateMetadataStaticColumns.GENE_DETAILS.colId(), new ICellListener<GenericTableRow>() { - public void handle(GenericTableRow rowItem) + public void handle(GenericTableRow rowItem, boolean keyPressed) { ISerializableComparable gene = rowItem.tryToGetValue(PlateMetadataStaticColumns.INHIBITED_GENE @@ -137,7 +137,7 @@ class PlateMetadataBrowser extends GenericTableBrowserGrid } @Override - protected void showEntityViewer(final GenericTableRow entity, boolean editMode) + protected void showEntityViewer(final GenericTableRow entity, boolean editMode, boolean active) { showEntityInformationHolderViewer(new IEntityInformationHolder() { @@ -165,10 +165,10 @@ class PlateMetadataBrowser extends GenericTableBrowserGrid { return EntityKind.SAMPLE; } - }, editMode); + }, editMode, active); } - protected void showMaterialViewer(final GenericTableRow entity, boolean editMode) + protected void showMaterialViewer(final GenericTableRow entity, boolean editMode, boolean active) { showEntityInformationHolderViewer(new IEntityInformationHolder() { @@ -196,10 +196,10 @@ class PlateMetadataBrowser extends GenericTableBrowserGrid { return EntityKind.MATERIAL; } - }, editMode); + }, editMode, active); } - protected void showGeneViewer(final GenericTableRow entity, boolean editMode) + protected void showGeneViewer(final GenericTableRow entity, boolean editMode, boolean active) { showEntityInformationHolderViewer(new IEntityInformationHolder() { @@ -229,7 +229,7 @@ class PlateMetadataBrowser extends GenericTableBrowserGrid { return EntityKind.MATERIAL; } - }, editMode); + }, editMode, active); } } \ No newline at end of file