From fec3f26c0aa564be8fbc88becabe600415cf784d Mon Sep 17 00:00:00 2001 From: "francesco.mangiacrapa" Date: Tue, 8 Nov 2022 14:50:48 +0100 Subject: [PATCH] Fixing timeline status --- .../client/ui/cms/project/ProjectViewer.java | 3 +- .../relation/TimelineManagerStatus.java | 71 ++++++++++++++----- .../relation/TimelineRelationPanel.java | 8 ++- 3 files changed, 61 insertions(+), 21 deletions(-) diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/cms/project/ProjectViewer.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/cms/project/ProjectViewer.java index 8a635e0..8ccba30 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/cms/project/ProjectViewer.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/cms/project/ProjectViewer.java @@ -148,8 +148,9 @@ public class ProjectViewer extends Composite { List relationships = projectView.getTheProjectDV().getRelationships(); if (relationships != null && relationships.size() > 0) { relationshipsButton.setVisible(true); - } else + } else { relationshipsButton.setVisible(false); + } relationshipsButton.addClickHandler(new ClickHandler() { diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/cms/project/relation/TimelineManagerStatus.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/cms/project/relation/TimelineManagerStatus.java index 94e94a1..c311dc7 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/cms/project/relation/TimelineManagerStatus.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/cms/project/relation/TimelineManagerStatus.java @@ -9,32 +9,35 @@ import com.google.gwt.user.client.ui.RootPanel; public class TimelineManagerStatus { - private ProjectDV showingProject; private HandlerManager applicationBus; + private TimelineStatus status; + public TimelineManagerStatus(HandlerManager applicationBus) { this.applicationBus = applicationBus; } - protected TimelineRelationPanel getTimelineOf(ProjectDV theProject) { + protected TimelineStatus getTimelineOf(ProjectDV theProject) { + + if (status == null) { + status = new TimelineStatus(true, new TimelineRelationPanel(applicationBus, theProject), theProject); + GWT.log("Displaying new Timeline of " + status); + return status; - if (showingProject == null) { - GWT.log("Displaying new Timeline of " + theProject); - this.showingProject = theProject; - return new TimelineRelationPanel(applicationBus, theProject); } else { - boolean c1 = showingProject.getId().compareTo(theProject.getId()) == 0; - boolean c2 = showingProject.getProfileID().compareTo(theProject.getProfileID()) == 0; + boolean c1 = status.getTheProjectDV().getId().compareTo(theProject.getId()) == 0; + boolean c2 = status.getTheProjectDV().getProfileID().compareTo(theProject.getProfileID()) == 0; if (!c1 || !c2) { - GWT.log("Displaying Timeline of " + theProject); - this.showingProject = theProject; - return new TimelineRelationPanel(applicationBus, theProject); + GWT.log("Displaying Timeline of " + status); + status = new TimelineStatus(true, new TimelineRelationPanel(applicationBus, theProject), theProject); + return status; } - GWT.log("Skipping already displayed Timeline of " + theProject); - return null; + status.statusChanged(false); + GWT.log("Skipping already displayed Timeline of " + status); + return status; } @@ -43,18 +46,50 @@ public class TimelineManagerStatus { public void showTimelineProjectRelations(ProjectDV theProject) { GWT.log("Showing project relations for: " + theProject); - TimelineRelationPanel timeline = getTimelineOf(theProject); - if (timeline != null) { + TimelineStatus timelineStatus = getTimelineOf(theProject); + if (timelineStatus.isStatusChanged()) { RootPanel.get(GeoportalDataViewer.DIV_TIMELINE_DATA).clear(); - RootPanel.get(GeoportalDataViewer.DIV_TIMELINE_DATA).setVisible(true); - RootPanel.get(GeoportalDataViewer.DIV_TIMELINE_DATA).add(timeline); + RootPanel.get(GeoportalDataViewer.DIV_TIMELINE_DATA).add(timelineStatus.getTimelineRP()); } + + RootPanel.get(GeoportalDataViewer.DIV_TIMELINE_DATA).setVisible(true); + timelineStatus.getTimelineRP().setTimelineContainerVisible(true); } public void hideTimelineProjectRelations() { GWT.log("hideTimelineProjectRelations"); RootPanel.get(GeoportalDataViewer.DIV_TIMELINE_DATA).setVisible(false); - RootPanel.get(GeoportalDataViewer.DIV_TIMELINE_DATA).clear(); + //RootPanel.get(GeoportalDataViewer.DIV_TIMELINE_DATA).clear(); + } + + public class TimelineStatus { + + public boolean statusChanged = false; + private TimelineRelationPanel timelineRP; + private ProjectDV theProjectDV; + + public TimelineStatus(boolean statusChanged, TimelineRelationPanel timelineRP, ProjectDV theProjectDV) { + this.statusChanged = statusChanged; + this.timelineRP = timelineRP; + this.theProjectDV = theProjectDV; + } + + public void statusChanged(boolean bool) { + this.statusChanged = bool; + } + + public boolean isStatusChanged() { + return statusChanged; + } + + public TimelineRelationPanel getTimelineRP() { + return timelineRP; + } + + public ProjectDV getTheProjectDV() { + return theProjectDV; + } + } } diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/cms/project/relation/TimelineRelationPanel.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/cms/project/relation/TimelineRelationPanel.java index 4c6bba5..4980dad 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/cms/project/relation/TimelineRelationPanel.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/cms/project/relation/TimelineRelationPanel.java @@ -83,9 +83,9 @@ public class TimelineRelationPanel extends Composite { public void onClick(ClickEvent event) { if(timelineContainer.isVisible()) - timelineContainer.setVisible(false); + setTimelineContainerVisible(false); else - timelineContainer.setVisible(true); + setTimelineContainerVisible(true); } }); @@ -124,6 +124,10 @@ public class TimelineRelationPanel extends Composite { }); } + + public void setTimelineContainerVisible(boolean bool) { + timelineContainer.setVisible(bool); + } private void setSelectedProject(String projectID) { this.selectedProjectID = projectID;