From f317c9de8125f1ae442754029e5d31bff86c532e Mon Sep 17 00:00:00 2001 From: Matthew Horridge Date: Tue, 30 Jul 2024 11:22:37 -0700 Subject: [PATCH 01/18] Replace spotify docker plugin with maven-exec plugin This change is necessary because the spotify docker plugin does not work on Apple Silicon and the plugin itself is no longer maintained. --- webprotege-gwt-ui-server/pom.xml | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/webprotege-gwt-ui-server/pom.xml b/webprotege-gwt-ui-server/pom.xml index e4b2ae0e8..42216af0d 100644 --- a/webprotege-gwt-ui-server/pom.xml +++ b/webprotege-gwt-ui-server/pom.xml @@ -221,22 +221,30 @@ - com.spotify - dockerfile-maven-plugin - 1.4.13 + org.codehaus.mojo + exec-maven-plugin + 3.3.0 - default + docker-build + package - build - push + exec + + docker + ${project.basedir} + + build + -f + Dockerfile + -t + protegeproject/${project.artifactId}:${project.version} + . + + - - protegeproject/${project.artifactId} - ${project.version} - From a995d80df5e62f28fc9f9acbd1471d137ad5b4fa Mon Sep 17 00:00:00 2001 From: Matthew Horridge Date: Thu, 1 Aug 2024 13:31:28 -0700 Subject: [PATCH 02/18] Use maven-exec for docker push --- .github/workflows/release.yaml | 2 +- webprotege-gwt-ui-server/pom.xml | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 1dcd9a76f..fc2aef175 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -38,7 +38,7 @@ jobs: - name: Build package run: mvn --batch-mode clean package - name: Build and push image - run: mvn --batch-mode -pl webprotege-gwt-ui-server dockerfile:build dockerfile:push + run: mvn --batch-mode -pl webprotege-gwt-ui-server package install - name: Release uses: softprops/action-gh-release@v1 env: diff --git a/webprotege-gwt-ui-server/pom.xml b/webprotege-gwt-ui-server/pom.xml index e4b2ae0e8..38e99a4ac 100644 --- a/webprotege-gwt-ui-server/pom.xml +++ b/webprotege-gwt-ui-server/pom.xml @@ -232,6 +232,21 @@ push + + docker-push + install + + exec + + + docker + ${project.basedir} + + push + protegeproject/${project.artifactId}:${project.version} + + + protegeproject/${project.artifactId} From afd22e3f49e0c2a786930b9ee9e15ac0baec230d Mon Sep 17 00:00:00 2001 From: Matthew Horridge Date: Fri, 2 Aug 2024 16:50:10 -0700 Subject: [PATCH 03/18] Fixes #46 --- .../bmir/protege/web/server/dispatch/DispatchServlet.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/webprotege-gwt-ui-server/src/main/java/edu/stanford/bmir/protege/web/server/dispatch/DispatchServlet.java b/webprotege-gwt-ui-server/src/main/java/edu/stanford/bmir/protege/web/server/dispatch/DispatchServlet.java index e7dff1b5f..2816c85e2 100644 --- a/webprotege-gwt-ui-server/src/main/java/edu/stanford/bmir/protege/web/server/dispatch/DispatchServlet.java +++ b/webprotege-gwt-ui-server/src/main/java/edu/stanford/bmir/protege/web/server/dispatch/DispatchServlet.java @@ -105,9 +105,9 @@ private CompletableFuture createCompletableFutureForBatchAction(ImmutableL var innerExecutionResult = ActionExecutionResult.get(innerResult); resultList.set(index, innerExecutionResult); } catch (ActionExecutionException e) { - resultList.add(ActionExecutionResult.get(e)); + resultList.set(index, ActionExecutionResult.get(e)); } catch (PermissionDeniedException e) { - resultList.add(ActionExecutionResult.get(e)); + resultList.set(index, ActionExecutionResult.get(e)); } }); futures.add(future); From af5fc8ab62f3392fab9990844746857cb6ee8fdf Mon Sep 17 00:00:00 2001 From: Automated Version Bump Date: Sat, 3 Aug 2024 00:04:08 +0000 Subject: [PATCH 04/18] ci: version bump 6.0.2 --- pom.xml | 2 +- webprotege-gwt-ui-client/pom.xml | 2 +- webprotege-gwt-ui-server-core/pom.xml | 2 +- webprotege-gwt-ui-server/pom.xml | 2 +- webprotege-gwt-ui-shared-core/pom.xml | 2 +- webprotege-gwt-ui-shared/pom.xml | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/pom.xml b/pom.xml index e3133bb58..e37156d83 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ edu.stanford.protege webprotege-gwt-ui - 6.0.1 + 6.0.2 pom diff --git a/webprotege-gwt-ui-client/pom.xml b/webprotege-gwt-ui-client/pom.xml index 5aa1e9699..4b9b92cc6 100644 --- a/webprotege-gwt-ui-client/pom.xml +++ b/webprotege-gwt-ui-client/pom.xml @@ -6,7 +6,7 @@ edu.stanford.protege webprotege-gwt-ui - 6.0.1 + 6.0.2 webprotege-gwt-ui-client diff --git a/webprotege-gwt-ui-server-core/pom.xml b/webprotege-gwt-ui-server-core/pom.xml index 2e2997509..72121ef5f 100644 --- a/webprotege-gwt-ui-server-core/pom.xml +++ b/webprotege-gwt-ui-server-core/pom.xml @@ -5,7 +5,7 @@ webprotege-gwt-ui edu.stanford.protege - 6.0.1 + 6.0.2 4.0.0 diff --git a/webprotege-gwt-ui-server/pom.xml b/webprotege-gwt-ui-server/pom.xml index e4b2ae0e8..238a9782f 100644 --- a/webprotege-gwt-ui-server/pom.xml +++ b/webprotege-gwt-ui-server/pom.xml @@ -6,7 +6,7 @@ edu.stanford.protege webprotege-gwt-ui - 6.0.1 + 6.0.2 webprotege-gwt-ui-server diff --git a/webprotege-gwt-ui-shared-core/pom.xml b/webprotege-gwt-ui-shared-core/pom.xml index 2beff378a..f322ba443 100644 --- a/webprotege-gwt-ui-shared-core/pom.xml +++ b/webprotege-gwt-ui-shared-core/pom.xml @@ -5,7 +5,7 @@ webprotege-gwt-ui edu.stanford.protege - 6.0.1 + 6.0.2 4.0.0 diff --git a/webprotege-gwt-ui-shared/pom.xml b/webprotege-gwt-ui-shared/pom.xml index 1b94cdb4f..a077a5de8 100644 --- a/webprotege-gwt-ui-shared/pom.xml +++ b/webprotege-gwt-ui-shared/pom.xml @@ -6,7 +6,7 @@ edu.stanford.protege webprotege-gwt-ui - 6.0.1 + 6.0.2 webprotege-gwt-ui-shared From bec587d36a6313e292cc6d7376239d60e29fe98b Mon Sep 17 00:00:00 2001 From: Automated Version Bump Date: Mon, 5 Aug 2024 20:54:45 +0000 Subject: [PATCH 05/18] ci: version bump 6.0.3 --- pom.xml | 2 +- webprotege-gwt-ui-client/pom.xml | 2 +- webprotege-gwt-ui-server-core/pom.xml | 2 +- webprotege-gwt-ui-server/pom.xml | 2 +- webprotege-gwt-ui-shared-core/pom.xml | 2 +- webprotege-gwt-ui-shared/pom.xml | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/pom.xml b/pom.xml index e37156d83..addb2a4d6 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ edu.stanford.protege webprotege-gwt-ui - 6.0.2 + 6.0.3 pom diff --git a/webprotege-gwt-ui-client/pom.xml b/webprotege-gwt-ui-client/pom.xml index 4b9b92cc6..3a7ada5c4 100644 --- a/webprotege-gwt-ui-client/pom.xml +++ b/webprotege-gwt-ui-client/pom.xml @@ -6,7 +6,7 @@ edu.stanford.protege webprotege-gwt-ui - 6.0.2 + 6.0.3 webprotege-gwt-ui-client diff --git a/webprotege-gwt-ui-server-core/pom.xml b/webprotege-gwt-ui-server-core/pom.xml index 72121ef5f..dbd2d5637 100644 --- a/webprotege-gwt-ui-server-core/pom.xml +++ b/webprotege-gwt-ui-server-core/pom.xml @@ -5,7 +5,7 @@ webprotege-gwt-ui edu.stanford.protege - 6.0.2 + 6.0.3 4.0.0 diff --git a/webprotege-gwt-ui-server/pom.xml b/webprotege-gwt-ui-server/pom.xml index 80de88a32..725936711 100644 --- a/webprotege-gwt-ui-server/pom.xml +++ b/webprotege-gwt-ui-server/pom.xml @@ -6,7 +6,7 @@ edu.stanford.protege webprotege-gwt-ui - 6.0.2 + 6.0.3 webprotege-gwt-ui-server diff --git a/webprotege-gwt-ui-shared-core/pom.xml b/webprotege-gwt-ui-shared-core/pom.xml index f322ba443..a069400c4 100644 --- a/webprotege-gwt-ui-shared-core/pom.xml +++ b/webprotege-gwt-ui-shared-core/pom.xml @@ -5,7 +5,7 @@ webprotege-gwt-ui edu.stanford.protege - 6.0.2 + 6.0.3 4.0.0 diff --git a/webprotege-gwt-ui-shared/pom.xml b/webprotege-gwt-ui-shared/pom.xml index a077a5de8..fcb8c9853 100644 --- a/webprotege-gwt-ui-shared/pom.xml +++ b/webprotege-gwt-ui-shared/pom.xml @@ -6,7 +6,7 @@ edu.stanford.protege webprotege-gwt-ui - 6.0.2 + 6.0.3 webprotege-gwt-ui-shared From 10aa8cc6c74e09cff05d290f0850e418add6bb50 Mon Sep 17 00:00:00 2001 From: Matthew Horridge Date: Mon, 5 Aug 2024 14:01:50 -0700 Subject: [PATCH 06/18] Moved tab presenter and related interfaces/classes to the tab package and removed "form" from the names --- .../entity/CreateEntityFormViewImpl.java | 4 +- .../entity/CreateEntityFormViewImpl.ui.xml | 2 +- .../client/form/EntityFormStackPresenter.java | 3 +- .../web/client/form/FormPortletPresenter.java | 3 +- .../web/client/form/FormStackPresenter.java | 38 +++++++++-------- .../web/client/form/FormStackView.java | 3 +- .../web/client/form/FormStackViewImpl.java | 5 ++- .../client/inject/ClientProjectModule.java | 8 +++- .../SelectedTabChangedHandler.java} | 4 +- .../SelectedTabIdStash.java} | 6 +-- .../TabBarPresenter.java} | 42 +++++++++---------- .../TabBarView.java} | 6 +-- .../TabBarViewImpl.java} | 10 ++--- .../TabBarViewImpl.ui.xml} | 0 .../TabContentContainer.java} | 4 +- .../TabPresenter.java} | 25 ++++------- .../FormTabView.java => tab/TabView.java} | 4 +- .../TabViewImpl.java} | 9 ++-- .../TabViewImpl.ui.xml} | 0 19 files changed, 91 insertions(+), 85 deletions(-) rename webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/{form/SelectedFormChangedHandler.java => tab/SelectedTabChangedHandler.java} (59%) rename webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/{form/SelectedFormIdStash.java => tab/SelectedTabIdStash.java} (84%) rename webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/{form/FormTabBarPresenter.java => tab/TabBarPresenter.java} (60%) rename webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/{form/FormTabBarView.java => tab/TabBarView.java} (59%) rename webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/{form/FormTabBarViewImpl.java => tab/TabBarViewImpl.java} (76%) rename webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/{form/FormTabBarViewImpl.ui.xml => tab/TabBarViewImpl.ui.xml} (100%) rename webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/{form/FormContainer.java => tab/TabContentContainer.java} (64%) rename webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/{form/FormTabPresenter.java => tab/TabPresenter.java} (67%) rename webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/{form/FormTabView.java => tab/TabView.java} (81%) rename webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/{form/FormTabViewImpl.java => tab/TabViewImpl.java} (88%) rename webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/{form/FormTabViewImpl.ui.xml => tab/TabViewImpl.ui.xml} (100%) diff --git a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/entity/CreateEntityFormViewImpl.java b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/entity/CreateEntityFormViewImpl.java index 8ac35a1fc..effbcf6c3 100644 --- a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/entity/CreateEntityFormViewImpl.java +++ b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/entity/CreateEntityFormViewImpl.java @@ -18,7 +18,7 @@ interface CreateEntityFormViewImplUiBinder extends UiBinder - + \ No newline at end of file diff --git a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/EntityFormStackPresenter.java b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/EntityFormStackPresenter.java index 32700acd0..787ce0972 100644 --- a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/EntityFormStackPresenter.java +++ b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/EntityFormStackPresenter.java @@ -10,6 +10,7 @@ import edu.stanford.bmir.protege.web.client.lang.LangTagFilterPresenter; import edu.stanford.bmir.protege.web.client.permissions.LoggedInUserProjectPermissionChecker; import edu.stanford.bmir.protege.web.client.progress.HasBusy; +import edu.stanford.bmir.protege.web.client.tab.SelectedTabIdStash; import edu.stanford.bmir.protege.web.shared.access.BuiltInAction; import edu.stanford.bmir.protege.web.shared.entity.EntityDisplay; import edu.stanford.bmir.protege.web.shared.form.*; @@ -283,7 +284,7 @@ private void dropEdits() { updateFormsForCurrentEntity(formStackPresenter.getSelectedForms()); } - public void setSelectedFormIdStash(@Nonnull SelectedFormIdStash formIdStash) { + public void setSelectedFormIdStash(@Nonnull SelectedTabIdStash formIdStash) { formStackPresenter.setSelectedFormIdStash(formIdStash); } diff --git a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormPortletPresenter.java b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormPortletPresenter.java index a47861236..20c298d6c 100644 --- a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormPortletPresenter.java +++ b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormPortletPresenter.java @@ -6,6 +6,7 @@ import edu.stanford.bmir.protege.web.client.portlet.PortletAction; import edu.stanford.bmir.protege.web.client.portlet.PortletUi; import edu.stanford.bmir.protege.web.client.selection.SelectionModel; +import edu.stanford.bmir.protege.web.client.tab.SelectedTabIdStash; import edu.stanford.bmir.protege.web.shared.event.WebProtegeEventBus; import edu.stanford.bmir.protege.web.shared.project.ProjectId; import edu.stanford.webprotege.shared.annotations.Portlet; @@ -72,7 +73,7 @@ public void startPortlet(PortletUi portletUi, WebProtegeEventBus eventBus) { setDisplaySelectedEntityNameAsSubtitle(true); entityFormStackPresenter.start(portletUi); entityFormStackPresenter.setHasBusy(portletUi); - entityFormStackPresenter.setSelectedFormIdStash(new SelectedFormIdStash(portletUi)); + entityFormStackPresenter.setSelectedFormIdStash(new SelectedTabIdStash(portletUi)); entityFormStackPresenter.setLanguageFilterStash(new FormLanguageFilterStash(portletUi)); entityFormStackPresenter.setEntityDisplay(this); handleAfterSetEntity(getSelectedEntity()); diff --git a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormStackPresenter.java b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormStackPresenter.java index b53d5dc27..cece38515 100644 --- a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormStackPresenter.java +++ b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormStackPresenter.java @@ -4,6 +4,10 @@ import com.google.common.collect.ImmutableSet; import com.google.gwt.user.client.ui.AcceptsOneWidget; import edu.stanford.bmir.protege.web.client.form.FormRegionPageChangedEvent.FormRegionPageChangedHandler; +import edu.stanford.bmir.protege.web.client.tab.TabBarPresenter; +import edu.stanford.bmir.protege.web.client.tab.TabContentContainer; +import edu.stanford.bmir.protege.web.client.tab.SelectedTabChangedHandler; +import edu.stanford.bmir.protege.web.client.tab.SelectedTabIdStash; import edu.stanford.bmir.protege.web.shared.form.*; import edu.stanford.bmir.protege.web.shared.form.data.FormData; import edu.stanford.bmir.protege.web.shared.form.data.FormDataDto; @@ -29,7 +33,7 @@ public class FormStackPresenter implements HasFormRegionFilterChangedHandler { @Nonnull public ImmutableList getSelectedForms() { - return formTabBarPresenter.getSelectedForm() + return tabBarPresenter.getSelectedForm() .map(ImmutableList::of) .orElse(ImmutableList.of()); } @@ -40,7 +44,7 @@ public enum FormUpdate { } @Nonnull - private final FormTabBarPresenter formTabBarPresenter; + private final TabBarPresenter tabBarPresenter; @Nonnull private final FormStackView view; @@ -68,23 +72,23 @@ public enum FormUpdate { @Inject - public FormStackPresenter(@Nonnull FormTabBarPresenter formTabBarPresenter, + public FormStackPresenter(@Nonnull TabBarPresenter tabBarPresenter, @Nonnull FormStackView view, @Nonnull NoFormView noFormView, @Nonnull Provider formPresenterProvider) { - this.formTabBarPresenter = checkNotNull(formTabBarPresenter); + this.tabBarPresenter = checkNotNull(tabBarPresenter); this.view = checkNotNull(view); this.noFormView = checkNotNull(noFormView); this.formPresenterProvider = checkNotNull(formPresenterProvider); } public Optional getSelectedForm() { - return formTabBarPresenter.getSelectedForm(); + return tabBarPresenter.getSelectedForm(); } public void clearForms() { formPresenters.clear(); - formTabBarPresenter.clear(); + tabBarPresenter.clear(); updateView(); } @@ -93,8 +97,8 @@ public void setEnabled(boolean enabled) { getFormPresenters().forEach(formPresenter -> formPresenter.setEnabled(enabled)); } - public void setSelectedFormChangedHandler(@Nonnull SelectedFormChangedHandler selectedFormChangedHandler) { - this.formTabBarPresenter.setSelectedFormChangedHandler(selectedFormChangedHandler); + public void setSelectedFormChangedHandler(@Nonnull SelectedTabChangedHandler selectedTabChangedHandler) { + this.tabBarPresenter.setSelectedFormChangedHandler(selectedTabChangedHandler); } public void setFormRegionPageChangedHandler(@Nonnull FormRegionPageChangedHandler handler) { @@ -162,24 +166,24 @@ private boolean formsAreCurrent(@Nonnull ImmutableList forms) { private void replaceForms(@Nonnull ImmutableList forms) { formPresenters.clear(); - formTabBarPresenter.clear(); + tabBarPresenter.clear(); view.clear(); forms.forEach(formData -> { FormPresenter formPresenter = formPresenterProvider.get(); FormDescriptorDto formDescriptor = formData.getFormDescriptor(); - FormContainer formContainer = view.addContainer(formDescriptor.getLabel()); - formPresenter.start(formContainer); + TabContentContainer tabContentContainer = view.addContainer(formDescriptor.getLabel()); + formPresenter.start(tabContentContainer); formPresenter.setFormRegionPageChangedHandler(regionPageChangedHandler); formPresenter.setGridOrderByChangedHandler(formRegionOrderingChangedHandler); formPresenter.displayForm(formData); formPresenter.setEnabled(enabled); formPresenter.setFormRegionFilterChangedHandler(formRegionFilterChangedHandler); formPresenters.put(formData.getFormId(), formPresenter); - formTabBarPresenter.addForm(formDescriptor.getFormId(), + tabBarPresenter.addForm(formDescriptor.getFormId(), formDescriptor.getLabel(), - formContainer); + tabContentContainer); }); - formTabBarPresenter.restoreSelection(); + tabBarPresenter.restoreSelection(); } private void updateForms(@Nonnull ImmutableList forms) { @@ -205,12 +209,12 @@ private void updateView() { public void start(@Nonnull AcceptsOneWidget container) { this.container = Optional.of(container); container.setWidget(view); - formTabBarPresenter.start(view.getSelectorContainer()); + tabBarPresenter.start(view.getSelectorContainer()); updateView(); } - public void setSelectedFormIdStash(@Nonnull SelectedFormIdStash formIdStash) { - formTabBarPresenter.setSelectedFormIdStash(formIdStash); + public void setSelectedFormIdStash(@Nonnull SelectedTabIdStash formIdStash) { + tabBarPresenter.setSelectedFormIdStash(formIdStash); } @Nonnull diff --git a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormStackView.java b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormStackView.java index 562ae677a..7b5b53fb2 100644 --- a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormStackView.java +++ b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormStackView.java @@ -2,6 +2,7 @@ import com.google.gwt.user.client.ui.AcceptsOneWidget; import com.google.gwt.user.client.ui.IsWidget; +import edu.stanford.bmir.protege.web.client.tab.TabContentContainer; import edu.stanford.bmir.protege.web.shared.lang.LanguageMap; import javax.annotation.Nonnull; @@ -17,7 +18,7 @@ public interface FormStackView extends IsWidget { AcceptsOneWidget getSelectorContainer(); @Nonnull - FormContainer addContainer(@Nonnull LanguageMap labels); + TabContentContainer addContainer(@Nonnull LanguageMap labels); void clear(); } diff --git a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormStackViewImpl.java b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormStackViewImpl.java index 3c16d26c8..8518182de 100644 --- a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormStackViewImpl.java +++ b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormStackViewImpl.java @@ -4,6 +4,7 @@ import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.*; +import edu.stanford.bmir.protege.web.client.tab.TabContentContainer; import edu.stanford.bmir.protege.web.shared.lang.LanguageMap; import javax.annotation.Nonnull; @@ -39,10 +40,10 @@ public FormStackViewImpl() { @Nonnull @Override - public FormContainer addContainer(@Nonnull LanguageMap labels) { + public TabContentContainer addContainer(@Nonnull LanguageMap labels) { FormStackContainer simplePanel = new FormStackContainer(); container.add(simplePanel); - return new FormContainer() { + return new TabContentContainer() { @Override public void setWidget(IsWidget w) { simplePanel.setWidget(w); diff --git a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/inject/ClientProjectModule.java b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/inject/ClientProjectModule.java index ba1ea56fc..974ee67af 100644 --- a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/inject/ClientProjectModule.java +++ b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/inject/ClientProjectModule.java @@ -50,6 +50,10 @@ import edu.stanford.bmir.protege.web.client.sharing.SharingSettingsView; import edu.stanford.bmir.protege.web.client.sharing.SharingSettingsViewImpl; import edu.stanford.bmir.protege.web.client.shortform.ShortFormModule; +import edu.stanford.bmir.protege.web.client.tab.TabBarView; +import edu.stanford.bmir.protege.web.client.tab.TabBarViewImpl; +import edu.stanford.bmir.protege.web.client.tab.TabView; +import edu.stanford.bmir.protege.web.client.tab.TabViewImpl; import edu.stanford.bmir.protege.web.client.tag.*; import edu.stanford.bmir.protege.web.client.viz.*; import edu.stanford.bmir.protege.web.client.watches.WatchView; @@ -789,12 +793,12 @@ LangTagFilterView provideLangTagFilterView(LangTagFilterViewImpl impl) { } @Provides - FormTabBarView provideFormSelectorView(FormTabBarViewImpl impl) { + TabBarView provideFormSelectorView(TabBarViewImpl impl) { return impl; } @Provides - FormTabView provideFormSelectorItemView(FormTabViewImpl impl) { + TabView provideFormSelectorItemView(TabViewImpl impl) { return impl; } diff --git a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/SelectedFormChangedHandler.java b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/SelectedTabChangedHandler.java similarity index 59% rename from webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/SelectedFormChangedHandler.java rename to webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/SelectedTabChangedHandler.java index dfb066ad5..6d451860b 100644 --- a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/SelectedFormChangedHandler.java +++ b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/SelectedTabChangedHandler.java @@ -1,11 +1,11 @@ -package edu.stanford.bmir.protege.web.client.form; +package edu.stanford.bmir.protege.web.client.tab; /** * Matthew Horridge * Stanford Center for Biomedical Informatics Research * 2020-11-13 */ -interface SelectedFormChangedHandler { +public interface SelectedTabChangedHandler { void handleSelectedFormChanged(); } diff --git a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/SelectedFormIdStash.java b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/SelectedTabIdStash.java similarity index 84% rename from webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/SelectedFormIdStash.java rename to webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/SelectedTabIdStash.java index 5a8263ab8..aea0ca0cd 100644 --- a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/SelectedFormIdStash.java +++ b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/SelectedTabIdStash.java @@ -1,4 +1,4 @@ -package edu.stanford.bmir.protege.web.client.form; +package edu.stanford.bmir.protege.web.client.tab; import edu.stanford.bmir.protege.web.client.portlet.HasNodeProperties; import edu.stanford.bmir.protege.web.shared.form.FormId; @@ -13,14 +13,14 @@ * Stanford Center for Biomedical Informatics Research * 2020-04-27 */ -public class SelectedFormIdStash { +public class SelectedTabIdStash { private static final String KEY = "forms-selected-form"; @Nonnull private final HasNodeProperties nodeProperties; - public SelectedFormIdStash(@Nonnull HasNodeProperties nodeProperties) { + public SelectedTabIdStash(@Nonnull HasNodeProperties nodeProperties) { this.nodeProperties = checkNotNull(nodeProperties); } diff --git a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormTabBarPresenter.java b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/TabBarPresenter.java similarity index 60% rename from webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormTabBarPresenter.java rename to webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/TabBarPresenter.java index fd5dc010a..2222c4533 100644 --- a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormTabBarPresenter.java +++ b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/TabBarPresenter.java @@ -1,4 +1,4 @@ -package edu.stanford.bmir.protege.web.client.form; +package edu.stanford.bmir.protege.web.client.tab; import com.google.gwt.user.client.ui.AcceptsOneWidget; import edu.stanford.bmir.protege.web.shared.form.FormId; @@ -17,23 +17,23 @@ * Stanford Center for Biomedical Informatics Research * 2020-04-27 */ -public class FormTabBarPresenter { +public class TabBarPresenter { @Nonnull - private final List itemPresenters = new ArrayList<>(); + private final List itemPresenters = new ArrayList<>(); @Nonnull - private final FormTabBarView view; + private final TabBarView view; - private final FormTabPresenterFactory tabPresenterFactory; + private final TabPresenterFactory tabPresenterFactory; - private SelectedFormChangedHandler selectedFormChangedHandler = () -> {}; + private SelectedTabChangedHandler selectedTabChangedHandler = () -> {}; @Nonnull - private Optional selectedFormIdStash = Optional.empty(); + private Optional selectedFormIdStash = Optional.empty(); @Inject - public FormTabBarPresenter(@Nonnull FormTabBarView view, FormTabPresenterFactory tabPresenterFactory) { + public TabBarPresenter(@Nonnull TabBarView view, TabPresenterFactory tabPresenterFactory) { this.view = checkNotNull(view); this.tabPresenterFactory = checkNotNull(tabPresenterFactory); } @@ -44,13 +44,13 @@ public void clear() { view.setVisible(false); } - public void setSelectedFormChangedHandler(@Nonnull SelectedFormChangedHandler selectedFormChangedHandler) { - this.selectedFormChangedHandler = checkNotNull(selectedFormChangedHandler); + public void setSelectedFormChangedHandler(@Nonnull SelectedTabChangedHandler selectedTabChangedHandler) { + this.selectedTabChangedHandler = checkNotNull(selectedTabChangedHandler); } - public void setSelectedFormIdStash(@Nonnull SelectedFormIdStash selectedFormIdStash) { - this.selectedFormIdStash = Optional.of(selectedFormIdStash); - selectedFormIdStash.getSelectedForm().ifPresent(this::restoreFormSelection); + public void setSelectedFormIdStash(@Nonnull SelectedTabIdStash selectedTabIdStash) { + this.selectedFormIdStash = Optional.of(selectedTabIdStash); + selectedTabIdStash.getSelectedForm().ifPresent(this::restoreFormSelection); } private void restoreFormSelection(FormId formId) { @@ -62,12 +62,12 @@ public void start(@Nonnull AcceptsOneWidget container) { restoreSelection(); } - public void addForm(@Nonnull FormId formId, @Nonnull LanguageMap label, @Nonnull FormContainer formContainer) { - FormTabPresenter tabPresenter = tabPresenterFactory.create(formId); + public void addForm(@Nonnull FormId formId, @Nonnull LanguageMap label, @Nonnull TabContentContainer tabContentContainer) { + TabPresenter tabPresenter = tabPresenterFactory.create(formId); itemPresenters.add(tabPresenter); view.addView(tabPresenter.getView()); tabPresenter.setLabel(label); - tabPresenter.setFormContainer(formContainer); + tabPresenter.setFormContainer(tabContentContainer); tabPresenter.setClickHandler(event -> selectFormAndStashId(formId)); view.setVisible(itemPresenters.size() > 1); } @@ -75,11 +75,11 @@ public void addForm(@Nonnull FormId formId, @Nonnull LanguageMap label, @Nonnull public void selectFormAndStashId(@Nonnull FormId formId) { setSelected(formId); selectedFormIdStash.ifPresent(stash -> stash.stashSelectedForm(formId)); - selectedFormChangedHandler.handleSelectedFormChanged(); + selectedTabChangedHandler.handleSelectedFormChanged(); } private void setSelected(FormId formId) { - for (FormTabPresenter ip : itemPresenters) { + for (TabPresenter ip : itemPresenters) { boolean selected = ip.getFormId().equals(formId); ip.setSelected(selected); } @@ -99,13 +99,13 @@ public void restoreSelection() { } public void setFirstFormSelected() { - itemPresenters.stream().findFirst().map(FormTabPresenter::getFormId).ifPresent(this::setSelected); + itemPresenters.stream().findFirst().map(TabPresenter::getFormId).ifPresent(this::setSelected); } public Optional getSelectedForm() { return itemPresenters.stream() - .filter(FormTabPresenter::isSelected) - .map(FormTabPresenter::getFormId) + .filter(TabPresenter::isSelected) + .map(TabPresenter::getFormId) .findFirst(); } } diff --git a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormTabBarView.java b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/TabBarView.java similarity index 59% rename from webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormTabBarView.java rename to webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/TabBarView.java index c9789aff3..41e6587d0 100644 --- a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormTabBarView.java +++ b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/TabBarView.java @@ -1,4 +1,4 @@ -package edu.stanford.bmir.protege.web.client.form; +package edu.stanford.bmir.protege.web.client.tab; import com.google.gwt.user.client.ui.IsWidget; @@ -7,9 +7,9 @@ * Stanford Center for Biomedical Informatics Research * 2020-04-27 */ -public interface FormTabBarView extends IsWidget { +public interface TabBarView extends IsWidget { - void addView(FormTabView tabView); + void addView(TabView tabView); void clear(); diff --git a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormTabBarViewImpl.java b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/TabBarViewImpl.java similarity index 76% rename from webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormTabBarViewImpl.java rename to webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/TabBarViewImpl.java index 1bc522a59..b23043dc2 100644 --- a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormTabBarViewImpl.java +++ b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/TabBarViewImpl.java @@ -1,4 +1,4 @@ -package edu.stanford.bmir.protege.web.client.form; +package edu.stanford.bmir.protege.web.client.tab; import com.google.gwt.core.client.GWT; import com.google.gwt.uibinder.client.UiBinder; @@ -13,14 +13,14 @@ * Stanford Center for Biomedical Informatics Research * 2020-04-27 */ -public class FormTabBarViewImpl extends Composite implements FormTabBarView { +public class TabBarViewImpl extends Composite implements TabBarView { @Override - public void addView(FormTabView tabView) { + public void addView(TabView tabView) { itemContainer.add(tabView); } - interface FormTabBarViewImplUiBinder extends UiBinder { + interface FormTabBarViewImplUiBinder extends UiBinder { } @@ -30,7 +30,7 @@ interface FormTabBarViewImplUiBinder extends UiBinder formContainer = Optional.empty(); + private Optional formContainer = Optional.empty(); @AutoFactory @Inject - public FormTabPresenter(@Nonnull FormId formId, - @Provided @Nonnull FormTabView view) { + public TabPresenter(@Nonnull FormId formId, + @Provided @Nonnull TabView view) { this.formId = checkNotNull(formId); this.view = checkNotNull(view); } @@ -46,8 +39,8 @@ public FormId getFormId() { return formId; } - public void setFormContainer(@Nonnull FormContainer formContainer) { - this.formContainer = Optional.of(checkNotNull(formContainer)); + public void setFormContainer(@Nonnull TabContentContainer tabContentContainer) { + this.formContainer = Optional.of(checkNotNull(tabContentContainer)); } public void setLabel(LanguageMap label) { @@ -69,7 +62,7 @@ public void setClickHandler(@Nonnull ClickHandler clickHandler) { } @Nonnull - public FormTabView getView() { + public TabView getView() { return view; } } diff --git a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormTabView.java b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/TabView.java similarity index 81% rename from webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormTabView.java rename to webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/TabView.java index 2cbbb82f9..44f9048ac 100644 --- a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormTabView.java +++ b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/TabView.java @@ -1,4 +1,4 @@ -package edu.stanford.bmir.protege.web.client.form; +package edu.stanford.bmir.protege.web.client.tab; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.user.client.ui.IsWidget; @@ -11,7 +11,7 @@ * Stanford Center for Biomedical Informatics Research * 2020-04-27 */ -public interface FormTabView extends IsWidget { +public interface TabView extends IsWidget { void setClickHandler(@Nonnull ClickHandler clickHandler); diff --git a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormTabViewImpl.java b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/TabViewImpl.java similarity index 88% rename from webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormTabViewImpl.java rename to webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/TabViewImpl.java index 0f53bcb4c..3ba397d18 100644 --- a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormTabViewImpl.java +++ b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/TabViewImpl.java @@ -1,4 +1,4 @@ -package edu.stanford.bmir.protege.web.client.form; +package edu.stanford.bmir.protege.web.client.tab; import com.google.gwt.core.client.GWT; import com.google.gwt.event.dom.client.ClickHandler; @@ -8,6 +8,7 @@ import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.Label; +import edu.stanford.bmir.protege.web.client.form.LanguageMapCurrentLocaleMapper; import edu.stanford.bmir.protege.web.resources.WebProtegeClientBundle; import edu.stanford.bmir.protege.web.shared.lang.LanguageMap; @@ -19,12 +20,12 @@ * Stanford Center for Biomedical Informatics Research * 2020-04-27 */ -public class FormTabViewImpl extends Composite implements FormTabView { +public class TabViewImpl extends Composite implements TabView { public static final String SELECTED_ITEM_STYLE = WebProtegeClientBundle.BUNDLE.style() .formTabBar__tab__selected(); - interface FormTabViewImplUiBinder extends UiBinder { + interface FormTabViewImplUiBinder extends UiBinder { } @@ -38,7 +39,7 @@ interface FormTabViewImplUiBinder extends UiBinder { private final LanguageMapCurrentLocaleMapper localeMapper = new LanguageMapCurrentLocaleMapper(); @Inject - public FormTabViewImpl() { + public TabViewImpl() { initWidget(ourUiBinder.createAndBindUi(this)); } diff --git a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormTabViewImpl.ui.xml b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/TabViewImpl.ui.xml similarity index 100% rename from webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormTabViewImpl.ui.xml rename to webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/TabViewImpl.ui.xml From 03fb8cf9909d29dc6f68c7de19e8f358c5cf7bc6 Mon Sep 17 00:00:00 2001 From: Matthew Horridge Date: Mon, 5 Aug 2024 16:26:25 -0700 Subject: [PATCH 07/18] Genericized TabBarPresenter and associated classes --- .../client/form/EntityFormStackPresenter.java | 2 +- .../client/form/FormIdTabKeySerializer.java | 21 ++++ .../web/client/form/FormPortletPresenter.java | 7 +- .../form/FormRegionPageChangedEvent.java | 2 +- .../web/client/form/FormStackPresenter.java | 17 +-- .../client/tab/SelectedTabChangedHandler.java | 6 +- .../web/client/tab/SelectedTabIdStash.java | 29 +++-- .../web/client/tab/TabBarPresenter.java | 106 ++++++++++++------ .../web/client/tab/TabContentContainer.java | 3 + .../web/client/tab/TabKeySerializer.java | 31 +++++ .../protege/web/client/tab/TabPresenter.java | 66 +++++++++-- .../web/client/tab/TabPresenterFactory.java | 21 ++++ 12 files changed, 240 insertions(+), 71 deletions(-) create mode 100644 webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormIdTabKeySerializer.java create mode 100644 webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/TabKeySerializer.java create mode 100644 webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/TabPresenterFactory.java diff --git a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/EntityFormStackPresenter.java b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/EntityFormStackPresenter.java index 787ce0972..fe3067812 100644 --- a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/EntityFormStackPresenter.java +++ b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/EntityFormStackPresenter.java @@ -284,7 +284,7 @@ private void dropEdits() { updateFormsForCurrentEntity(formStackPresenter.getSelectedForms()); } - public void setSelectedFormIdStash(@Nonnull SelectedTabIdStash formIdStash) { + public void setSelectedFormIdStash(@Nonnull SelectedTabIdStash formIdStash) { formStackPresenter.setSelectedFormIdStash(formIdStash); } diff --git a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormIdTabKeySerializer.java b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormIdTabKeySerializer.java new file mode 100644 index 000000000..8b90464cc --- /dev/null +++ b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormIdTabKeySerializer.java @@ -0,0 +1,21 @@ +package edu.stanford.bmir.protege.web.client.form; + +import edu.stanford.bmir.protege.web.client.tab.TabKeySerializer; +import edu.stanford.bmir.protege.web.shared.form.FormId; + +import javax.annotation.Nonnull; + +public class FormIdTabKeySerializer implements TabKeySerializer { + + @Nonnull + @Override + public String serialize(@Nonnull FormId key) { + return key.getId(); + } + + @Nonnull + @Override + public FormId deserialize(@Nonnull String key) { + return FormId.get(key); + } +} diff --git a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormPortletPresenter.java b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormPortletPresenter.java index 20c298d6c..fa062a756 100644 --- a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormPortletPresenter.java +++ b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormPortletPresenter.java @@ -26,10 +26,6 @@ @Portlet(id = "portlets.form", title = "Form", tooltip = "Displays forms for the selected entity") public class FormPortletPresenter extends AbstractWebProtegePortletPresenter { - - @Nonnull - private final ProjectId projectId; - @Nonnull private final EntityFormStackPresenter entityFormStackPresenter; @@ -40,7 +36,6 @@ public FormPortletPresenter(@Nonnull SelectionModel selectionModel, @Nonnull EntityFormStackPresenter entityFormStackPresenter, DispatchServiceManager dispatch) { super(selectionModel, projectId, displayNameRenderer, dispatch); - this.projectId = checkNotNull(projectId); this.entityFormStackPresenter = checkNotNull(entityFormStackPresenter); } @@ -73,7 +68,7 @@ public void startPortlet(PortletUi portletUi, WebProtegeEventBus eventBus) { setDisplaySelectedEntityNameAsSubtitle(true); entityFormStackPresenter.start(portletUi); entityFormStackPresenter.setHasBusy(portletUi); - entityFormStackPresenter.setSelectedFormIdStash(new SelectedTabIdStash(portletUi)); + entityFormStackPresenter.setSelectedFormIdStash(new SelectedTabIdStash<>(portletUi, new FormIdTabKeySerializer())); entityFormStackPresenter.setLanguageFilterStash(new FormLanguageFilterStash(portletUi)); entityFormStackPresenter.setEntityDisplay(this); handleAfterSetEntity(getSelectedEntity()); diff --git a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormRegionPageChangedEvent.java b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormRegionPageChangedEvent.java index bb2c03712..e006a2552 100644 --- a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormRegionPageChangedEvent.java +++ b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormRegionPageChangedEvent.java @@ -12,7 +12,7 @@ @AutoValue public abstract class FormRegionPageChangedEvent { - interface FormRegionPageChangedHandler { + public interface FormRegionPageChangedHandler { void handleFormRegionPageChanged(@Nonnull FormRegionPageChangedEvent event); } diff --git a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormStackPresenter.java b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormStackPresenter.java index cece38515..6a7e02f8c 100644 --- a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormStackPresenter.java +++ b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/form/FormStackPresenter.java @@ -29,11 +29,12 @@ * Stanford Center for Biomedical Informatics Research * 2020-01-20 */ +@SuppressWarnings("OptionalUsedAsFieldOrParameterType") public class FormStackPresenter implements HasFormRegionFilterChangedHandler { @Nonnull public ImmutableList getSelectedForms() { - return tabBarPresenter.getSelectedForm() + return tabBarPresenter.getSelectedTab() .map(ImmutableList::of) .orElse(ImmutableList.of()); } @@ -44,7 +45,7 @@ public enum FormUpdate { } @Nonnull - private final TabBarPresenter tabBarPresenter; + private final TabBarPresenter tabBarPresenter; @Nonnull private final FormStackView view; @@ -72,7 +73,7 @@ public enum FormUpdate { @Inject - public FormStackPresenter(@Nonnull TabBarPresenter tabBarPresenter, + public FormStackPresenter(@Nonnull TabBarPresenter tabBarPresenter, @Nonnull FormStackView view, @Nonnull NoFormView noFormView, @Nonnull Provider formPresenterProvider) { @@ -83,7 +84,7 @@ public FormStackPresenter(@Nonnull TabBarPresenter tabBarPresenter, } public Optional getSelectedForm() { - return tabBarPresenter.getSelectedForm(); + return tabBarPresenter.getSelectedTab(); } public void clearForms() { @@ -98,7 +99,7 @@ public void setEnabled(boolean enabled) { } public void setSelectedFormChangedHandler(@Nonnull SelectedTabChangedHandler selectedTabChangedHandler) { - this.tabBarPresenter.setSelectedFormChangedHandler(selectedTabChangedHandler); + this.tabBarPresenter.setSelectedTabChangedHandler(selectedTabChangedHandler); } public void setFormRegionPageChangedHandler(@Nonnull FormRegionPageChangedHandler handler) { @@ -179,7 +180,7 @@ private void replaceForms(@Nonnull ImmutableList forms) { formPresenter.setEnabled(enabled); formPresenter.setFormRegionFilterChangedHandler(formRegionFilterChangedHandler); formPresenters.put(formData.getFormId(), formPresenter); - tabBarPresenter.addForm(formDescriptor.getFormId(), + tabBarPresenter.addTab(formDescriptor.getFormId(), formDescriptor.getLabel(), tabContentContainer); }); @@ -213,8 +214,8 @@ public void start(@Nonnull AcceptsOneWidget container) { updateView(); } - public void setSelectedFormIdStash(@Nonnull SelectedTabIdStash formIdStash) { - tabBarPresenter.setSelectedFormIdStash(formIdStash); + public void setSelectedFormIdStash(@Nonnull SelectedTabIdStash formIdStash) { + tabBarPresenter.setSelectedKeyStash(formIdStash); } @Nonnull diff --git a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/SelectedTabChangedHandler.java b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/SelectedTabChangedHandler.java index 6d451860b..483278675 100644 --- a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/SelectedTabChangedHandler.java +++ b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/SelectedTabChangedHandler.java @@ -7,5 +7,9 @@ */ public interface SelectedTabChangedHandler { - void handleSelectedFormChanged(); + /** + * Handles the event when the selected tab in the tab bar changes. + * This method is called to notify any registered listeners that the selected tab has changed. + */ + void handleSelectedTabChanged(); } diff --git a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/SelectedTabIdStash.java b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/SelectedTabIdStash.java index aea0ca0cd..3beb6e4fd 100644 --- a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/SelectedTabIdStash.java +++ b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/SelectedTabIdStash.java @@ -1,7 +1,6 @@ package edu.stanford.bmir.protege.web.client.tab; import edu.stanford.bmir.protege.web.client.portlet.HasNodeProperties; -import edu.stanford.bmir.protege.web.shared.form.FormId; import javax.annotation.Nonnull; import java.util.Optional; @@ -9,29 +8,39 @@ import static com.google.common.base.Preconditions.checkNotNull; /** - * Matthew Horridge - * Stanford Center for Biomedical Informatics Research - * 2020-04-27 + * This class represents a stash for storing and retrieving selected tab keys. The underlying functionality + * will serialize the selected key to a node properties object. + * + * @param the type of the key for the selected tab */ -public class SelectedTabIdStash { +public class SelectedTabIdStash { private static final String KEY = "forms-selected-form"; @Nonnull private final HasNodeProperties nodeProperties; - public SelectedTabIdStash(@Nonnull HasNodeProperties nodeProperties) { + private final TabKeySerializer tabKeySerializer; + + /** + * Constreuct a {@link SelectedTabIdStash} that will serialize and deserialize a key for a selected tab to the + * specified node properties object. + */ + public SelectedTabIdStash(@Nonnull HasNodeProperties nodeProperties, TabKeySerializer tabKeySerializer) { this.nodeProperties = checkNotNull(nodeProperties); + this.tabKeySerializer = checkNotNull(tabKeySerializer); } - public void stashSelectedForm(@Nonnull FormId formId) { - nodeProperties.setNodeProperty(KEY, formId.getId()); + public void stashSelectedTabKey(@Nonnull K key) { + checkNotNull(key); + String serializedKey = tabKeySerializer.serialize(key); + nodeProperties.setNodeProperty(KEY, serializedKey); } @Nonnull - public Optional getSelectedForm() { + public Optional getSelectedKey() { return Optional.ofNullable(nodeProperties.getNodeProperty(KEY, null)) - .map(FormId::get); + .map(tabKeySerializer::deserialize); } } diff --git a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/TabBarPresenter.java b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/TabBarPresenter.java index 2222c4533..a55c02fe1 100644 --- a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/TabBarPresenter.java +++ b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/TabBarPresenter.java @@ -1,7 +1,6 @@ package edu.stanford.bmir.protege.web.client.tab; import com.google.gwt.user.client.ui.AcceptsOneWidget; -import edu.stanford.bmir.protege.web.shared.form.FormId; import edu.stanford.bmir.protege.web.shared.lang.LanguageMap; import javax.annotation.Nonnull; @@ -13,14 +12,21 @@ import static com.google.common.base.Preconditions.checkNotNull; /** + * * Matthew Horridge * Stanford Center for Biomedical Informatics Research * 2020-04-27 + *

+ * The TabBarPresenter class is responsible for controlling the behavior of a tab bar view. + * It manages a list of tab presenters and interacts with the tab bar view to display and select tabs. + * + * @param the type of the tab key */ -public class TabBarPresenter { +@SuppressWarnings("OptionalUsedAsFieldOrParameterType") +public class TabBarPresenter { @Nonnull - private final List itemPresenters = new ArrayList<>(); + private final List> itemPresenters = new ArrayList<>(); @Nonnull private final TabBarView view; @@ -30,7 +36,7 @@ public class TabBarPresenter { private SelectedTabChangedHandler selectedTabChangedHandler = () -> {}; @Nonnull - private Optional selectedFormIdStash = Optional.empty(); + private Optional> selectedKeyStash = Optional.empty(); @Inject public TabBarPresenter(@Nonnull TabBarView view, TabPresenterFactory tabPresenterFactory) { @@ -38,23 +44,39 @@ public TabBarPresenter(@Nonnull TabBarView view, TabPresenterFactory tabPresente this.tabPresenterFactory = checkNotNull(tabPresenterFactory); } + /** + * Clears the item presenters and view of the tab bar. + * Additionally, sets the visibility of the view to false. + */ public void clear() { itemPresenters.clear(); view.clear(); view.setVisible(false); } - public void setSelectedFormChangedHandler(@Nonnull SelectedTabChangedHandler selectedTabChangedHandler) { + /** + * Sets the handler for the event when the selected tab in the tab bar changes. + * + * @param selectedTabChangedHandler The SelectedTabChangedHandler to be set as the handler. + * Must not be null. + */ + public void setSelectedTabChangedHandler(@Nonnull SelectedTabChangedHandler selectedTabChangedHandler) { this.selectedTabChangedHandler = checkNotNull(selectedTabChangedHandler); } - public void setSelectedFormIdStash(@Nonnull SelectedTabIdStash selectedTabIdStash) { - this.selectedFormIdStash = Optional.of(selectedTabIdStash); - selectedTabIdStash.getSelectedForm().ifPresent(this::restoreFormSelection); + /** + * Sets the selected key stash for the tab bar. The selected key stash is used to store and retrieve + * the selected tab key. It also restores the tab selection if a selected key stash is present. + * + * @param selectedTabIdStash The SelectedTabIdStash object representing the selected key stash. + */ + public void setSelectedKeyStash(@Nonnull SelectedTabIdStash selectedTabIdStash) { + this.selectedKeyStash = Optional.of(selectedTabIdStash); + selectedTabIdStash.getSelectedKey().ifPresent(this::restoreTabSelection); } - private void restoreFormSelection(FormId formId) { - setSelected(formId); + private void restoreTabSelection(K key) { + setSelected(key); } public void start(@Nonnull AcceptsOneWidget container) { @@ -62,50 +84,70 @@ public void start(@Nonnull AcceptsOneWidget container) { restoreSelection(); } - public void addForm(@Nonnull FormId formId, @Nonnull LanguageMap label, @Nonnull TabContentContainer tabContentContainer) { - TabPresenter tabPresenter = tabPresenterFactory.create(formId); + /** + * Adds a new tab to the tab bar with the given key, label, and content container. + * + * @param key The key associated with the tab. + * @param label The label of the tab. + * @param tabContentContainer The container that holds the content of the tab. + */ + public void addTab(@Nonnull K key, @Nonnull LanguageMap label, @Nonnull TabContentContainer tabContentContainer) { + TabPresenter tabPresenter = tabPresenterFactory.create(key); itemPresenters.add(tabPresenter); view.addView(tabPresenter.getView()); tabPresenter.setLabel(label); - tabPresenter.setFormContainer(tabContentContainer); - tabPresenter.setClickHandler(event -> selectFormAndStashId(formId)); + tabPresenter.setTabContentContainer(tabContentContainer); + tabPresenter.setClickHandler(event -> selectTabAndStashId(key)); view.setVisible(itemPresenters.size() > 1); } - public void selectFormAndStashId(@Nonnull FormId formId) { - setSelected(formId); - selectedFormIdStash.ifPresent(stash -> stash.stashSelectedForm(formId)); - selectedTabChangedHandler.handleSelectedFormChanged(); + private void selectTabAndStashId(@Nonnull K key) { + setSelected(key); + selectedKeyStash.ifPresent(stash -> stash.stashSelectedTabKey(key)); + selectedTabChangedHandler.handleSelectedTabChanged(); } - private void setSelected(FormId formId) { - for (TabPresenter ip : itemPresenters) { - boolean selected = ip.getFormId().equals(formId); + private void setSelected(K key) { + for (TabPresenter ip : itemPresenters) { + boolean selected = ip.getKey().equals(key); ip.setSelected(selected); } } + /** + * Restores the selection of the tab bar. If a selected key stash is present, the method will try to restore the + * selected tab using the stored key. If no selected tab is found, the method will set the first tab as selected. + * If no selected key stash is present, the method will also set the first tab as selected. + */ public void restoreSelection() { - this.selectedFormIdStash.ifPresent(stash -> { - Optional selectedForm = stash.getSelectedForm(); - selectedForm.ifPresent(this::restoreFormSelection); - if (!selectedForm.isPresent()) { - setFirstFormSelected(); + this.selectedKeyStash.ifPresent(stash -> { + Optional selectedTab = stash.getSelectedKey(); + selectedTab.ifPresent(this::restoreTabSelection); + if (!selectedTab.isPresent()) { + setFirstTabSelected(); } }); - if (!selectedFormIdStash.isPresent()) { - setFirstFormSelected(); + if (!selectedKeyStash.isPresent()) { + setFirstTabSelected(); } } - public void setFirstFormSelected() { - itemPresenters.stream().findFirst().map(TabPresenter::getFormId).ifPresent(this::setSelected); + /** + * Sets the first tab of the tab bar as selected. If the list of tabs is empty, no tab will be selected. + */ + public void setFirstTabSelected() { + itemPresenters.stream().findFirst().map(TabPresenter::getKey).ifPresent(this::setSelected); } - public Optional getSelectedForm() { + /** + * Returns the key associated with the selected tab in the tab bar. + * + * @return An Optional containing the key of the selected tab, or an empty Optional if no tab is selected. + */ + public Optional getSelectedTab() { return itemPresenters.stream() .filter(TabPresenter::isSelected) - .map(TabPresenter::getFormId) + .map(TabPresenter::getKey) .findFirst(); } } diff --git a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/TabContentContainer.java b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/TabContentContainer.java index 9880f0877..c293e3270 100644 --- a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/TabContentContainer.java +++ b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/TabContentContainer.java @@ -8,6 +8,9 @@ * Matthew Horridge * Stanford Center for Biomedical Informatics Research * 2020-04-27 + *

+ * The TabContentContainer interface represents a container for the content of a tab in a tab bar. + * It extends the AcceptsOneWidget, IsWidget, and HasVisibility interfaces. */ public interface TabContentContainer extends AcceptsOneWidget, IsWidget, HasVisibility { diff --git a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/TabKeySerializer.java b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/TabKeySerializer.java new file mode 100644 index 000000000..11d4a7f1f --- /dev/null +++ b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/TabKeySerializer.java @@ -0,0 +1,31 @@ +package edu.stanford.bmir.protege.web.client.tab; + +import javax.annotation.Nonnull; + +/** + * This interface represents a serializer/deserializer for tab keys. + * + * @param the type of the key + */ +public interface TabKeySerializer { + + /** + * Serializes the given key to a string representation. + * + * @param key the key to be serialized + * @return a string representation of the serialized key + * @throws NullPointerException if the provided key is null + */ + @Nonnull + String serialize(@Nonnull K key); + + /** + * Deserializes the given string key to its corresponding object representation. + * + * @param key the string key to be deserialized + * @return the deserialized object key + * @throws NullPointerException if the provided key is null + */ + @Nonnull + K deserialize(@Nonnull String key); +} diff --git a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/TabPresenter.java b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/TabPresenter.java index 61f26fa17..eb1b13261 100644 --- a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/TabPresenter.java +++ b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/TabPresenter.java @@ -1,10 +1,7 @@ package edu.stanford.bmir.protege.web.client.tab; -import com.google.auto.factory.AutoFactory; -import com.google.auto.factory.Provided; import com.google.gwt.event.dom.client.ClickHandler; -import edu.stanford.bmir.protege.web.shared.form.FormId; import edu.stanford.bmir.protege.web.shared.lang.LanguageMap; import javax.annotation.Nonnull; @@ -13,54 +10,99 @@ import static com.google.common.base.Preconditions.checkNotNull; -public class TabPresenter { +/** + * The TabPresenter class represents a presenter for an individual tab in a tab bar view. Note that the tab + * is the literal clickable tab and is not the content of the tab. Each tab has an underlying key that identifies it. + * + * @param the type of the tab key + */ +public class TabPresenter { @Nonnull - private final FormId formId; + private final K key; @Nonnull private final TabView view; private boolean selected = false; + @SuppressWarnings("OptionalUsedAsFieldOrParameterType") @Nonnull private Optional formContainer = Optional.empty(); - @AutoFactory @Inject - public TabPresenter(@Nonnull FormId formId, - @Provided @Nonnull TabView view) { - this.formId = checkNotNull(formId); + public TabPresenter(@Nonnull K key, + @Nonnull TabView view) { + this.key = checkNotNull(key); this.view = checkNotNull(view); } + /** + * Returns the key associated with the TabPresenter. The key is used to identify the tab. + * + * @return The key associated with the TabPresenter. + */ @Nonnull - public FormId getFormId() { - return formId; + public K getKey() { + return key; } - public void setFormContainer(@Nonnull TabContentContainer tabContentContainer) { + /** + * Sets the tab content container for the tab. When the tab is selected the content will be made + * visible. When the tab is deselected the content will be made invisible. + * + * @param tabContentContainer The tab content container to set. + */ + public void setTabContentContainer(@Nonnull TabContentContainer tabContentContainer) { this.formContainer = Optional.of(checkNotNull(tabContentContainer)); } + /** + * Sets the label for the tab. + * + * @param label The LanguageMap object representing the label of the tab. + */ public void setLabel(LanguageMap label) { view.setLabel(label); } + /** + * Sets the selected state of the tab. If the selected state is set to true then + * the {@link TabContentContainer} that is associated with this tab will have its visibility + * set to true. If the selected stat is set to false then the {@link TabContentContainer} that + * is associated with this tab will have its visibility set to false. + * + * @param selected true if the tab should be selected, false otherwise + */ public void setSelected(boolean selected) { this.selected = selected; view.setSelected(selected); formContainer.ifPresent(c -> c.setVisible(selected)); } + /** + * Checks if the tab is selected. + * + * @return true if the tab is selected, false otherwise + */ public boolean isSelected() { return selected; } + /** + * Sets the click handler for the tab. The handler will be called when the visible tab is clicked. + * + * @param clickHandler The ClickHandler object to set as the click handler. + */ public void setClickHandler(@Nonnull ClickHandler clickHandler) { view.setClickHandler(clickHandler); } + /** + * Retrieves the view associated with this TabPresenter. + * + * @return The TabView object representing the view associated with this TabPresenter. + */ @Nonnull public TabView getView() { return view; diff --git a/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/TabPresenterFactory.java b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/TabPresenterFactory.java new file mode 100644 index 000000000..91d27a427 --- /dev/null +++ b/webprotege-gwt-ui-client/src/main/java/edu/stanford/bmir/protege/web/client/tab/TabPresenterFactory.java @@ -0,0 +1,21 @@ +package edu.stanford.bmir.protege.web.client.tab; + +import javax.inject.Inject; +import javax.inject.Provider; + +import static com.google.common.base.Preconditions.checkNotNull; + +public class TabPresenterFactory { + + private final Provider viewProvider; + + @Inject + public TabPresenterFactory(Provider viewProvider) { + this.viewProvider = checkNotNull(viewProvider); + } + + public TabPresenter create(K key) { + return new TabPresenter<>(checkNotNull(key), + checkNotNull(viewProvider.get())); + } +} From b334594cf1828ffbd52134821dfe59b1eabb101a Mon Sep 17 00:00:00 2001 From: Matthew Horridge Date: Mon, 5 Aug 2024 16:31:37 -0700 Subject: [PATCH 08/18] Use maven-exec for docker build and push --- webprotege-gwt-ui-server/pom.xml | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/webprotege-gwt-ui-server/pom.xml b/webprotege-gwt-ui-server/pom.xml index 38e99a4ac..66ca08a2a 100644 --- a/webprotege-gwt-ui-server/pom.xml +++ b/webprotege-gwt-ui-server/pom.xml @@ -221,16 +221,30 @@ - com.spotify - dockerfile-maven-plugin - 1.4.13 + org.codehaus.mojo + exec-maven-plugin + 3.3.0 - default + docker-build + package - build - push + exec + + docker + ${project.basedir} + + build + -f + Dockerfile + --build-arg + JAR_FILE=${project.artifactId}-${project.version}.jar + -t + protegeproject/${project.artifactId}:${project.version} + . + + docker-push @@ -248,10 +262,6 @@ - - protegeproject/${project.artifactId} - ${project.version} - From 1c49e28e12cef21fe63c40d2708bbec8921bf747 Mon Sep 17 00:00:00 2001 From: Automated Version Bump Date: Mon, 5 Aug 2024 23:48:30 +0000 Subject: [PATCH 09/18] ci: version bump 6.0.4 --- pom.xml | 2 +- webprotege-gwt-ui-client/pom.xml | 2 +- webprotege-gwt-ui-server-core/pom.xml | 2 +- webprotege-gwt-ui-server/pom.xml | 2 +- webprotege-gwt-ui-shared-core/pom.xml | 2 +- webprotege-gwt-ui-shared/pom.xml | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/pom.xml b/pom.xml index addb2a4d6..b2603cc79 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ edu.stanford.protege webprotege-gwt-ui - 6.0.3 + 6.0.4 pom diff --git a/webprotege-gwt-ui-client/pom.xml b/webprotege-gwt-ui-client/pom.xml index 3a7ada5c4..92ee0863d 100644 --- a/webprotege-gwt-ui-client/pom.xml +++ b/webprotege-gwt-ui-client/pom.xml @@ -6,7 +6,7 @@ edu.stanford.protege webprotege-gwt-ui - 6.0.3 + 6.0.4 webprotege-gwt-ui-client diff --git a/webprotege-gwt-ui-server-core/pom.xml b/webprotege-gwt-ui-server-core/pom.xml index dbd2d5637..5f0ee8d38 100644 --- a/webprotege-gwt-ui-server-core/pom.xml +++ b/webprotege-gwt-ui-server-core/pom.xml @@ -5,7 +5,7 @@ webprotege-gwt-ui edu.stanford.protege - 6.0.3 + 6.0.4 4.0.0 diff --git a/webprotege-gwt-ui-server/pom.xml b/webprotege-gwt-ui-server/pom.xml index 8e9e7fe23..0f8180612 100644 --- a/webprotege-gwt-ui-server/pom.xml +++ b/webprotege-gwt-ui-server/pom.xml @@ -6,7 +6,7 @@ edu.stanford.protege webprotege-gwt-ui - 6.0.3 + 6.0.4 webprotege-gwt-ui-server diff --git a/webprotege-gwt-ui-shared-core/pom.xml b/webprotege-gwt-ui-shared-core/pom.xml index a069400c4..b725783da 100644 --- a/webprotege-gwt-ui-shared-core/pom.xml +++ b/webprotege-gwt-ui-shared-core/pom.xml @@ -5,7 +5,7 @@ webprotege-gwt-ui edu.stanford.protege - 6.0.3 + 6.0.4 4.0.0 diff --git a/webprotege-gwt-ui-shared/pom.xml b/webprotege-gwt-ui-shared/pom.xml index fcb8c9853..d15121dcf 100644 --- a/webprotege-gwt-ui-shared/pom.xml +++ b/webprotege-gwt-ui-shared/pom.xml @@ -6,7 +6,7 @@ edu.stanford.protege webprotege-gwt-ui - 6.0.3 + 6.0.4 webprotege-gwt-ui-shared From 62e76258852916dd28e3a84585c7b58ded4d8215 Mon Sep 17 00:00:00 2001 From: Matthew Horridge Date: Mon, 5 Aug 2024 20:22:22 -0700 Subject: [PATCH 10/18] -am is required --- .github/workflows/release.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index fc2aef175..8efc2c836 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -38,7 +38,7 @@ jobs: - name: Build package run: mvn --batch-mode clean package - name: Build and push image - run: mvn --batch-mode -pl webprotege-gwt-ui-server package install + run: mvn --batch-mode -pl webprotege-gwt-ui-server -am package install - name: Release uses: softprops/action-gh-release@v1 env: From c26874db900ce92555850d33d48fe83264f3e3f6 Mon Sep 17 00:00:00 2001 From: Automated Version Bump Date: Tue, 6 Aug 2024 17:07:42 +0000 Subject: [PATCH 11/18] ci: version bump 6.0.5 --- pom.xml | 2 +- webprotege-gwt-ui-client/pom.xml | 2 +- webprotege-gwt-ui-server-core/pom.xml | 2 +- webprotege-gwt-ui-server/pom.xml | 2 +- webprotege-gwt-ui-shared-core/pom.xml | 2 +- webprotege-gwt-ui-shared/pom.xml | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/pom.xml b/pom.xml index b2603cc79..4498b750f 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ edu.stanford.protege webprotege-gwt-ui - 6.0.4 + 6.0.5 pom diff --git a/webprotege-gwt-ui-client/pom.xml b/webprotege-gwt-ui-client/pom.xml index 92ee0863d..53ab5690e 100644 --- a/webprotege-gwt-ui-client/pom.xml +++ b/webprotege-gwt-ui-client/pom.xml @@ -6,7 +6,7 @@ edu.stanford.protege webprotege-gwt-ui - 6.0.4 + 6.0.5 webprotege-gwt-ui-client diff --git a/webprotege-gwt-ui-server-core/pom.xml b/webprotege-gwt-ui-server-core/pom.xml index 5f0ee8d38..dd99ba642 100644 --- a/webprotege-gwt-ui-server-core/pom.xml +++ b/webprotege-gwt-ui-server-core/pom.xml @@ -5,7 +5,7 @@ webprotege-gwt-ui edu.stanford.protege - 6.0.4 + 6.0.5 4.0.0 diff --git a/webprotege-gwt-ui-server/pom.xml b/webprotege-gwt-ui-server/pom.xml index 0f8180612..6e839c8a2 100644 --- a/webprotege-gwt-ui-server/pom.xml +++ b/webprotege-gwt-ui-server/pom.xml @@ -6,7 +6,7 @@ edu.stanford.protege webprotege-gwt-ui - 6.0.4 + 6.0.5 webprotege-gwt-ui-server diff --git a/webprotege-gwt-ui-shared-core/pom.xml b/webprotege-gwt-ui-shared-core/pom.xml index b725783da..71a087acc 100644 --- a/webprotege-gwt-ui-shared-core/pom.xml +++ b/webprotege-gwt-ui-shared-core/pom.xml @@ -5,7 +5,7 @@ webprotege-gwt-ui edu.stanford.protege - 6.0.4 + 6.0.5 4.0.0 diff --git a/webprotege-gwt-ui-shared/pom.xml b/webprotege-gwt-ui-shared/pom.xml index d15121dcf..d07b3672a 100644 --- a/webprotege-gwt-ui-shared/pom.xml +++ b/webprotege-gwt-ui-shared/pom.xml @@ -6,7 +6,7 @@ edu.stanford.protege webprotege-gwt-ui - 6.0.4 + 6.0.5 webprotege-gwt-ui-shared From b35afe0e7414f7ca9fb3126d0badbae26649667c Mon Sep 17 00:00:00 2001 From: Automated Version Bump Date: Tue, 6 Aug 2024 17:45:01 +0000 Subject: [PATCH 12/18] ci: version bump 6.0.6 --- pom.xml | 2 +- webprotege-gwt-ui-client/pom.xml | 2 +- webprotege-gwt-ui-server-core/pom.xml | 2 +- webprotege-gwt-ui-server/pom.xml | 2 +- webprotege-gwt-ui-shared-core/pom.xml | 2 +- webprotege-gwt-ui-shared/pom.xml | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/pom.xml b/pom.xml index 4498b750f..3fdf6c82a 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ edu.stanford.protege webprotege-gwt-ui - 6.0.5 + 6.0.6 pom diff --git a/webprotege-gwt-ui-client/pom.xml b/webprotege-gwt-ui-client/pom.xml index 53ab5690e..eef881085 100644 --- a/webprotege-gwt-ui-client/pom.xml +++ b/webprotege-gwt-ui-client/pom.xml @@ -6,7 +6,7 @@ edu.stanford.protege webprotege-gwt-ui - 6.0.5 + 6.0.6 webprotege-gwt-ui-client diff --git a/webprotege-gwt-ui-server-core/pom.xml b/webprotege-gwt-ui-server-core/pom.xml index dd99ba642..d3c2d925b 100644 --- a/webprotege-gwt-ui-server-core/pom.xml +++ b/webprotege-gwt-ui-server-core/pom.xml @@ -5,7 +5,7 @@ webprotege-gwt-ui edu.stanford.protege - 6.0.5 + 6.0.6 4.0.0 diff --git a/webprotege-gwt-ui-server/pom.xml b/webprotege-gwt-ui-server/pom.xml index 6e839c8a2..52a2a00ba 100644 --- a/webprotege-gwt-ui-server/pom.xml +++ b/webprotege-gwt-ui-server/pom.xml @@ -6,7 +6,7 @@ edu.stanford.protege webprotege-gwt-ui - 6.0.5 + 6.0.6 webprotege-gwt-ui-server diff --git a/webprotege-gwt-ui-shared-core/pom.xml b/webprotege-gwt-ui-shared-core/pom.xml index 71a087acc..d35e7f9c7 100644 --- a/webprotege-gwt-ui-shared-core/pom.xml +++ b/webprotege-gwt-ui-shared-core/pom.xml @@ -5,7 +5,7 @@ webprotege-gwt-ui edu.stanford.protege - 6.0.5 + 6.0.6 4.0.0 diff --git a/webprotege-gwt-ui-shared/pom.xml b/webprotege-gwt-ui-shared/pom.xml index d07b3672a..60da59151 100644 --- a/webprotege-gwt-ui-shared/pom.xml +++ b/webprotege-gwt-ui-shared/pom.xml @@ -6,7 +6,7 @@ edu.stanford.protege webprotege-gwt-ui - 6.0.5 + 6.0.6 webprotege-gwt-ui-shared From d2751465577c6ca2bca5ca287f4383271701044e Mon Sep 17 00:00:00 2001 From: Matthew Horridge Date: Thu, 5 Sep 2024 10:17:51 -0700 Subject: [PATCH 13/18] Fixes #56 Apply correct property name for source --- .../web/shared/form/field/SingleChoiceControlDescriptor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webprotege-gwt-ui-shared/src/main/java/edu/stanford/bmir/protege/web/shared/form/field/SingleChoiceControlDescriptor.java b/webprotege-gwt-ui-shared/src/main/java/edu/stanford/bmir/protege/web/shared/form/field/SingleChoiceControlDescriptor.java index 80882267e..ce4c125dc 100644 --- a/webprotege-gwt-ui-shared/src/main/java/edu/stanford/bmir/protege/web/shared/form/field/SingleChoiceControlDescriptor.java +++ b/webprotege-gwt-ui-shared/src/main/java/edu/stanford/bmir/protege/web/shared/form/field/SingleChoiceControlDescriptor.java @@ -62,7 +62,7 @@ public String getAssociatedType() { @Nonnull public abstract SingleChoiceControlType getWidgetType(); - @JsonProperty(PropertyNames.SOURCE_TYPE) + @JsonProperty(PropertyNames.CHOICES_SOURCE) @Nonnull public abstract ChoiceListSourceDescriptor getSource(); From d11a4c1b979c0ce596b9b34fcbf675d621f9bea8 Mon Sep 17 00:00:00 2001 From: Automated Version Bump Date: Thu, 5 Sep 2024 17:43:15 +0000 Subject: [PATCH 14/18] ci: version bump 6.0.7 --- pom.xml | 2 +- webprotege-gwt-ui-client/pom.xml | 2 +- webprotege-gwt-ui-server-core/pom.xml | 2 +- webprotege-gwt-ui-server/pom.xml | 2 +- webprotege-gwt-ui-shared-core/pom.xml | 2 +- webprotege-gwt-ui-shared/pom.xml | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/pom.xml b/pom.xml index 3fdf6c82a..b18611326 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ edu.stanford.protege webprotege-gwt-ui - 6.0.6 + 6.0.7 pom diff --git a/webprotege-gwt-ui-client/pom.xml b/webprotege-gwt-ui-client/pom.xml index eef881085..25abf3ce5 100644 --- a/webprotege-gwt-ui-client/pom.xml +++ b/webprotege-gwt-ui-client/pom.xml @@ -6,7 +6,7 @@ edu.stanford.protege webprotege-gwt-ui - 6.0.6 + 6.0.7 webprotege-gwt-ui-client diff --git a/webprotege-gwt-ui-server-core/pom.xml b/webprotege-gwt-ui-server-core/pom.xml index d3c2d925b..007b4f3e1 100644 --- a/webprotege-gwt-ui-server-core/pom.xml +++ b/webprotege-gwt-ui-server-core/pom.xml @@ -5,7 +5,7 @@ webprotege-gwt-ui edu.stanford.protege - 6.0.6 + 6.0.7 4.0.0 diff --git a/webprotege-gwt-ui-server/pom.xml b/webprotege-gwt-ui-server/pom.xml index 52a2a00ba..4713fe194 100644 --- a/webprotege-gwt-ui-server/pom.xml +++ b/webprotege-gwt-ui-server/pom.xml @@ -6,7 +6,7 @@ edu.stanford.protege webprotege-gwt-ui - 6.0.6 + 6.0.7 webprotege-gwt-ui-server diff --git a/webprotege-gwt-ui-shared-core/pom.xml b/webprotege-gwt-ui-shared-core/pom.xml index d35e7f9c7..3bfb9c1d7 100644 --- a/webprotege-gwt-ui-shared-core/pom.xml +++ b/webprotege-gwt-ui-shared-core/pom.xml @@ -5,7 +5,7 @@ webprotege-gwt-ui edu.stanford.protege - 6.0.6 + 6.0.7 4.0.0 diff --git a/webprotege-gwt-ui-shared/pom.xml b/webprotege-gwt-ui-shared/pom.xml index 60da59151..bca1810c2 100644 --- a/webprotege-gwt-ui-shared/pom.xml +++ b/webprotege-gwt-ui-shared/pom.xml @@ -6,7 +6,7 @@ edu.stanford.protege webprotege-gwt-ui - 6.0.6 + 6.0.7 webprotege-gwt-ui-shared From 21a303858ac44b11fd30658908b77cf2c69d55c4 Mon Sep 17 00:00:00 2001 From: Matthew Horridge Date: Thu, 5 Sep 2024 10:55:26 -0700 Subject: [PATCH 15/18] Fixes #57 Allow non-prefixed names for types --- .../form/FormControlValueDeserializer.java | 7 ++ ...FormControlValueDeserializer_TestCase.java | 100 +++++++++++++++++- 2 files changed, 104 insertions(+), 3 deletions(-) diff --git a/webprotege-gwt-ui-server-core/src/main/java/edu/stanford/bmir/protege/web/server/form/FormControlValueDeserializer.java b/webprotege-gwt-ui-server-core/src/main/java/edu/stanford/bmir/protege/web/server/form/FormControlValueDeserializer.java index 5b190b2fc..682d8459d 100644 --- a/webprotege-gwt-ui-server-core/src/main/java/edu/stanford/bmir/protege/web/server/form/FormControlValueDeserializer.java +++ b/webprotege-gwt-ui-server-core/src/main/java/edu/stanford/bmir/protege/web/server/form/FormControlValueDeserializer.java @@ -53,16 +53,23 @@ else if(node.isObject()) { } switch (type) { case "owl:Class" : + case "Class" : return PrimitiveFormControlData.get(df.getOWLClass(iri)); case "owl:ObjectProperty": + case "ObjectProperty" : return PrimitiveFormControlData.get(df.getOWLObjectProperty(iri)); case "owl:DatatypeProperty" : + case "DatatypeProperty" : + case "DataProperty" : return PrimitiveFormControlData.get(df.getOWLDataProperty(iri)); case "owl:AnnotationProperty": + case "AnnotationProperty" : return PrimitiveFormControlData.get(df.getOWLAnnotationProperty(iri)); case "rdfs:Datatype" : + case "Datatype" : return PrimitiveFormControlData.get(df.getOWLDatatype(iri)); case "owl:NamedIndividual" : + case "NamedIndividual" : return PrimitiveFormControlData.get(df.getOWLNamedIndividual(iri)); } throw new JsonParseException(p, "Unrecognised entity type: " + type); diff --git a/webprotege-gwt-ui-server-core/src/test/java/edu/stanford/bmir/protege/web/server/form/FormControlValueDeserializer_TestCase.java b/webprotege-gwt-ui-server-core/src/test/java/edu/stanford/bmir/protege/web/server/form/FormControlValueDeserializer_TestCase.java index 12f978c78..f0b8d6339 100644 --- a/webprotege-gwt-ui-server-core/src/test/java/edu/stanford/bmir/protege/web/server/form/FormControlValueDeserializer_TestCase.java +++ b/webprotege-gwt-ui-server-core/src/test/java/edu/stanford/bmir/protege/web/server/form/FormControlValueDeserializer_TestCase.java @@ -1,7 +1,5 @@ package edu.stanford.bmir.protege.web.server.form; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import edu.stanford.bmir.protege.web.MockingUtils; import edu.stanford.bmir.protege.web.server.jackson.ObjectMapperProvider; @@ -10,13 +8,15 @@ import edu.stanford.bmir.protege.web.shared.form.data.LiteralFormControlData; import edu.stanford.bmir.protege.web.shared.form.data.PrimitiveFormControlData; import edu.stanford.bmir.protege.web.shared.match.JsonSerializationTestUtil; +import org.assertj.core.api.Assertions; import org.junit.Before; import org.junit.Test; +import org.semanticweb.owlapi.model.*; import java.io.IOException; +import java.io.StringReader; import static org.hamcrest.Matchers.is; -import static org.junit.Assert.assertThat; public class FormControlValueDeserializer_TestCase { @@ -47,33 +47,127 @@ public void shouldRoundTripOwlClass() throws IOException { JsonSerializationTestUtil.testSerialization(value, PrimitiveFormControlData.class); } + @Test + public void shouldDeserializeOwlClass() throws IOException { + var json = "{\"@type\":\"owl:Class\",\"iri\":\"http://stuff.com/I1\"}"; + var value = objectMapper.readValue(new StringReader(json), PrimitiveFormControlData.class); + Assertions.assertThat(value.asEntity()).containsInstanceOf(OWLClass.class); + } + + @Test + public void shouldDeserializeClass() throws IOException { + var json = "{\"@type\":\"Class\",\"iri\":\"http://stuff.com/I1\"}"; + var value = objectMapper.readValue(new StringReader(json), PrimitiveFormControlData.class); + Assertions.assertThat(value.asEntity()).containsInstanceOf(OWLClass.class); + } + @Test public void shouldRoundTripOwlObjectProperty() throws IOException { var value = EntityFormControlData.get(MockingUtils.mockOWLObjectProperty()); JsonSerializationTestUtil.testSerialization(value, PrimitiveFormControlData.class); } + + + @Test + public void shouldDeserializeOwlObjectProperty() throws IOException { + var json = "{\"@type\":\"owl:ObjectProperty\",\"iri\":\"http://stuff.com/I1\"}"; + var value = objectMapper.readValue(new StringReader(json), PrimitiveFormControlData.class); + Assertions.assertThat(value.asEntity()).containsInstanceOf(OWLObjectProperty.class); + } + + @Test + public void shouldDeserializeObjectProperty() throws IOException { + var json = "{\"@type\":\"ObjectProperty\",\"iri\":\"http://stuff.com/I1\"}"; + var value = objectMapper.readValue(new StringReader(json), PrimitiveFormControlData.class); + Assertions.assertThat(value.asEntity()).containsInstanceOf(OWLObjectProperty.class); + } + + @Test public void shouldRoundTripOwlDataProperty() throws IOException { var value = EntityFormControlData.get(MockingUtils.mockOWLDataProperty()); JsonSerializationTestUtil.testSerialization(value, PrimitiveFormControlData.class); } + @Test + public void shouldDeserializeOwlDatatypeProperty() throws IOException { + var json = "{\"@type\":\"owl:DatatypeProperty\",\"iri\":\"http://stuff.com/I1\"}"; + var value = objectMapper.readValue(new StringReader(json), PrimitiveFormControlData.class); + Assertions.assertThat(value.asEntity()).containsInstanceOf(OWLDataProperty.class); + } + + @Test + public void shouldDeserializeDatatypeProperty() throws IOException { + var json = "{\"@type\":\"DatatypeProperty\",\"iri\":\"http://stuff.com/I1\"}"; + var value = objectMapper.readValue(new StringReader(json), PrimitiveFormControlData.class); + Assertions.assertThat(value.asEntity()).containsInstanceOf(OWLDataProperty.class); + } + + @Test + public void shouldDeserializeDataProperty() throws IOException { + var json = "{\"@type\":\"DataProperty\",\"iri\":\"http://stuff.com/I1\"}"; + var value = objectMapper.readValue(new StringReader(json), PrimitiveFormControlData.class); + Assertions.assertThat(value.asEntity()).containsInstanceOf(OWLDataProperty.class); + } + @Test public void shouldRoundTripOwlAnnotationProperty() throws IOException { var value = EntityFormControlData.get(MockingUtils.mockOWLAnnotationProperty()); JsonSerializationTestUtil.testSerialization(value, PrimitiveFormControlData.class); } + @Test + public void shouldDeserializeOwlAnnotationProperty() throws IOException { + var json = "{\"@type\":\"owl:AnnotationProperty\",\"iri\":\"http://stuff.com/I1\"}"; + var value = objectMapper.readValue(new StringReader(json), PrimitiveFormControlData.class); + Assertions.assertThat(value.asEntity()).containsInstanceOf(OWLAnnotationProperty.class); + } + + @Test + public void shouldDeserializeAnnotationProperty() throws IOException { + var json = "{\"@type\":\"AnnotationProperty\",\"iri\":\"http://stuff.com/I1\"}"; + var value = objectMapper.readValue(new StringReader(json), PrimitiveFormControlData.class); + Assertions.assertThat(value.asEntity()).containsInstanceOf(OWLAnnotationProperty.class); + } + @Test public void shouldRoundTripOwlNamedIndividual() throws IOException { var value = EntityFormControlData.get(MockingUtils.mockOWLNamedIndividual()); JsonSerializationTestUtil.testSerialization(value, PrimitiveFormControlData.class); } + @Test + public void shouldDeserializeOwlNamedIndividual() throws IOException { + var json = "{\"@type\":\"owl:NamedIndividual\",\"iri\":\"http://stuff.com/I1\"}"; + var value = objectMapper.readValue(new StringReader(json), PrimitiveFormControlData.class); + Assertions.assertThat(value.asEntity()).containsInstanceOf(OWLNamedIndividual.class); + } + + @Test + public void shouldDeserializeNamedIndividual() throws IOException { + var json = "{\"@type\":\"NamedIndividual\",\"iri\":\"http://stuff.com/I1\"}"; + var value = objectMapper.readValue(new StringReader(json), PrimitiveFormControlData.class); + Assertions.assertThat(value.asEntity()).containsInstanceOf(OWLNamedIndividual.class); + } + @Test public void shouldRoundTripOwlDatatype() throws IOException { var value = EntityFormControlData.get(MockingUtils.mockOWLDatatype()); JsonSerializationTestUtil.testSerialization(value, PrimitiveFormControlData.class); } + + @Test + public void shouldDeserializeRdfsDatatype() throws IOException { + var json = "{\"@type\":\"rdfs:Datatype\",\"iri\":\"http://stuff.com/I1\"}"; + var value = objectMapper.readValue(new StringReader(json), PrimitiveFormControlData.class); + Assertions.assertThat(value.asEntity()).containsInstanceOf(OWLDatatype.class); + } + + @Test + public void shouldDeserializeDatatype() throws IOException { + var json = "{\"@type\":\"Datatype\",\"iri\":\"http://stuff.com/I1\"}"; + var value = objectMapper.readValue(new StringReader(json), PrimitiveFormControlData.class); + Assertions.assertThat(value.asEntity()).containsInstanceOf(OWLDatatype.class); + } } \ No newline at end of file From 4cfb07422b382091df83e7aa830f94b331cbda6a Mon Sep 17 00:00:00 2001 From: Automated Version Bump Date: Thu, 5 Sep 2024 18:27:42 +0000 Subject: [PATCH 16/18] ci: version bump 6.0.8 --- pom.xml | 2 +- webprotege-gwt-ui-client/pom.xml | 2 +- webprotege-gwt-ui-server-core/pom.xml | 2 +- webprotege-gwt-ui-server/pom.xml | 2 +- webprotege-gwt-ui-shared-core/pom.xml | 2 +- webprotege-gwt-ui-shared/pom.xml | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/pom.xml b/pom.xml index b18611326..b2e64d4b2 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ edu.stanford.protege webprotege-gwt-ui - 6.0.7 + 6.0.8 pom diff --git a/webprotege-gwt-ui-client/pom.xml b/webprotege-gwt-ui-client/pom.xml index 25abf3ce5..ab1a99ea8 100644 --- a/webprotege-gwt-ui-client/pom.xml +++ b/webprotege-gwt-ui-client/pom.xml @@ -6,7 +6,7 @@ edu.stanford.protege webprotege-gwt-ui - 6.0.7 + 6.0.8 webprotege-gwt-ui-client diff --git a/webprotege-gwt-ui-server-core/pom.xml b/webprotege-gwt-ui-server-core/pom.xml index 007b4f3e1..8615d3b99 100644 --- a/webprotege-gwt-ui-server-core/pom.xml +++ b/webprotege-gwt-ui-server-core/pom.xml @@ -5,7 +5,7 @@ webprotege-gwt-ui edu.stanford.protege - 6.0.7 + 6.0.8 4.0.0 diff --git a/webprotege-gwt-ui-server/pom.xml b/webprotege-gwt-ui-server/pom.xml index 4713fe194..d83e5e040 100644 --- a/webprotege-gwt-ui-server/pom.xml +++ b/webprotege-gwt-ui-server/pom.xml @@ -6,7 +6,7 @@ edu.stanford.protege webprotege-gwt-ui - 6.0.7 + 6.0.8 webprotege-gwt-ui-server diff --git a/webprotege-gwt-ui-shared-core/pom.xml b/webprotege-gwt-ui-shared-core/pom.xml index 3bfb9c1d7..4d60e8574 100644 --- a/webprotege-gwt-ui-shared-core/pom.xml +++ b/webprotege-gwt-ui-shared-core/pom.xml @@ -5,7 +5,7 @@ webprotege-gwt-ui edu.stanford.protege - 6.0.7 + 6.0.8 4.0.0 diff --git a/webprotege-gwt-ui-shared/pom.xml b/webprotege-gwt-ui-shared/pom.xml index bca1810c2..0d4b23d5d 100644 --- a/webprotege-gwt-ui-shared/pom.xml +++ b/webprotege-gwt-ui-shared/pom.xml @@ -6,7 +6,7 @@ edu.stanford.protege webprotege-gwt-ui - 6.0.7 + 6.0.8 webprotege-gwt-ui-shared From 49ce7d30fc924d4597e24f3c28a3a798384eb6ab Mon Sep 17 00:00:00 2001 From: Matthew Horridge Date: Thu, 5 Sep 2024 17:48:28 -0700 Subject: [PATCH 17/18] Fixes #59 --- .../data/SingleChoiceControlDataDtoTest.java | 27 +++++++++++++++++++ .../form/data/SingleChoiceControlDataDto.java | 2 +- 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 webprotege-gwt-ui-server-core/src/test/java/edu/stanford/bmir/protege/web/server/form/data/SingleChoiceControlDataDtoTest.java diff --git a/webprotege-gwt-ui-server-core/src/test/java/edu/stanford/bmir/protege/web/server/form/data/SingleChoiceControlDataDtoTest.java b/webprotege-gwt-ui-server-core/src/test/java/edu/stanford/bmir/protege/web/server/form/data/SingleChoiceControlDataDtoTest.java new file mode 100644 index 000000000..6544f102a --- /dev/null +++ b/webprotege-gwt-ui-server-core/src/test/java/edu/stanford/bmir/protege/web/server/form/data/SingleChoiceControlDataDtoTest.java @@ -0,0 +1,27 @@ +package edu.stanford.bmir.protege.web.server.form.data; + +import com.google.common.collect.ImmutableList; +import edu.stanford.bmir.protege.web.shared.form.data.PrimitiveFormControlDataDto; +import edu.stanford.bmir.protege.web.shared.form.data.SingleChoiceControlDataDto; +import edu.stanford.bmir.protege.web.shared.form.field.FixedChoiceListSourceDescriptor; +import edu.stanford.bmir.protege.web.shared.form.field.SingleChoiceControlDescriptor; +import edu.stanford.bmir.protege.web.shared.form.field.SingleChoiceControlType; +import edu.stanford.bmir.protege.web.shared.match.JsonSerializationTestUtil; +import org.junit.Test; + +import java.io.IOException; + +public class SingleChoiceControlDataDtoTest { + + @Test + public void shouldDeserializeData() throws IOException { + SingleChoiceControlDataDto data = SingleChoiceControlDataDto.get( + SingleChoiceControlDescriptor.get(SingleChoiceControlType.COMBO_BOX, + FixedChoiceListSourceDescriptor.get(ImmutableList.of())), + PrimitiveFormControlDataDto.get("Hello"), + 1 + ); + + JsonSerializationTestUtil.testSerialization(data, SingleChoiceControlDataDto.class); + } +} \ No newline at end of file diff --git a/webprotege-gwt-ui-shared/src/main/java/edu/stanford/bmir/protege/web/shared/form/data/SingleChoiceControlDataDto.java b/webprotege-gwt-ui-shared/src/main/java/edu/stanford/bmir/protege/web/shared/form/data/SingleChoiceControlDataDto.java index fc43beec2..0ded0b5b9 100644 --- a/webprotege-gwt-ui-shared/src/main/java/edu/stanford/bmir/protege/web/shared/form/data/SingleChoiceControlDataDto.java +++ b/webprotege-gwt-ui-shared/src/main/java/edu/stanford/bmir/protege/web/shared/form/data/SingleChoiceControlDataDto.java @@ -27,7 +27,7 @@ public static SingleChoiceControlDataDto get(@JsonProperty(PropertyNames.CONTROL @JsonProperty(PropertyNames.CONTROL) public abstract SingleChoiceControlDescriptor getDescriptor(); - @JsonProperty(PropertyNames.CHOICE) + @JsonProperty(PropertyNames.VALUE) @Nullable protected abstract PrimitiveFormControlDataDto getChoiceInternal(); From 1c2e548b1e0393966d11d6c0ffc0f7dae458d5df Mon Sep 17 00:00:00 2001 From: Automated Version Bump Date: Fri, 6 Sep 2024 01:01:34 +0000 Subject: [PATCH 18/18] ci: version bump 6.0.9 --- pom.xml | 2 +- webprotege-gwt-ui-client/pom.xml | 2 +- webprotege-gwt-ui-server-core/pom.xml | 2 +- webprotege-gwt-ui-server/pom.xml | 2 +- webprotege-gwt-ui-shared-core/pom.xml | 2 +- webprotege-gwt-ui-shared/pom.xml | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/pom.xml b/pom.xml index b2e64d4b2..9a2e3e815 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ edu.stanford.protege webprotege-gwt-ui - 6.0.8 + 6.0.9 pom diff --git a/webprotege-gwt-ui-client/pom.xml b/webprotege-gwt-ui-client/pom.xml index ab1a99ea8..d607c6566 100644 --- a/webprotege-gwt-ui-client/pom.xml +++ b/webprotege-gwt-ui-client/pom.xml @@ -6,7 +6,7 @@ edu.stanford.protege webprotege-gwt-ui - 6.0.8 + 6.0.9 webprotege-gwt-ui-client diff --git a/webprotege-gwt-ui-server-core/pom.xml b/webprotege-gwt-ui-server-core/pom.xml index 8615d3b99..6ad8e0b5d 100644 --- a/webprotege-gwt-ui-server-core/pom.xml +++ b/webprotege-gwt-ui-server-core/pom.xml @@ -5,7 +5,7 @@ webprotege-gwt-ui edu.stanford.protege - 6.0.8 + 6.0.9 4.0.0 diff --git a/webprotege-gwt-ui-server/pom.xml b/webprotege-gwt-ui-server/pom.xml index d83e5e040..d94919137 100644 --- a/webprotege-gwt-ui-server/pom.xml +++ b/webprotege-gwt-ui-server/pom.xml @@ -6,7 +6,7 @@ edu.stanford.protege webprotege-gwt-ui - 6.0.8 + 6.0.9 webprotege-gwt-ui-server diff --git a/webprotege-gwt-ui-shared-core/pom.xml b/webprotege-gwt-ui-shared-core/pom.xml index 4d60e8574..0ad4499a4 100644 --- a/webprotege-gwt-ui-shared-core/pom.xml +++ b/webprotege-gwt-ui-shared-core/pom.xml @@ -5,7 +5,7 @@ webprotege-gwt-ui edu.stanford.protege - 6.0.8 + 6.0.9 4.0.0 diff --git a/webprotege-gwt-ui-shared/pom.xml b/webprotege-gwt-ui-shared/pom.xml index 0d4b23d5d..225b1db43 100644 --- a/webprotege-gwt-ui-shared/pom.xml +++ b/webprotege-gwt-ui-shared/pom.xml @@ -6,7 +6,7 @@ edu.stanford.protege webprotege-gwt-ui - 6.0.8 + 6.0.9 webprotege-gwt-ui-shared