From c9290074a8513a0983d40bf3d4cfdd22ec3f40cf Mon Sep 17 00:00:00 2001 From: Robin Shen Date: Sun, 22 Nov 2020 16:23:20 +0800 Subject: [PATCH] Improved entity reference panel --- .../java/io/onedev/server/util/Referenceable.java | 5 +++++ .../web/component/build/side/BuildSidePanel.java | 12 ++++++++++-- .../web/component/build/side/build-side.css | 5 +++++ .../entity/reference/ReferencePanel.html | 13 ++++++++----- .../entity/reference/ReferencePanel.java | 15 +++++++-------- .../web/component/issue/side/IssueSidePanel.java | 12 ++++++++++-- .../detail/PullRequestDetailPage.java | 10 +++++++++- 7 files changed, 54 insertions(+), 18 deletions(-) diff --git a/server-core/src/main/java/io/onedev/server/util/Referenceable.java b/server-core/src/main/java/io/onedev/server/util/Referenceable.java index 038377bfc3..e97836b033 100644 --- a/server-core/src/main/java/io/onedev/server/util/Referenceable.java +++ b/server-core/src/main/java/io/onedev/server/util/Referenceable.java @@ -9,5 +9,10 @@ public interface Referenceable { long getNumber(); String getPrefix(); + + public static String asReference(Referenceable referenceable) { + return String.format("%s %s#%d", referenceable.getPrefix(), + referenceable.getProject().getName(), referenceable.getNumber()); + } } diff --git a/server-core/src/main/java/io/onedev/server/web/component/build/side/BuildSidePanel.java b/server-core/src/main/java/io/onedev/server/web/component/build/side/BuildSidePanel.java index da7ad7be79..c560408389 100644 --- a/server-core/src/main/java/io/onedev/server/web/component/build/side/BuildSidePanel.java +++ b/server-core/src/main/java/io/onedev/server/web/component/build/side/BuildSidePanel.java @@ -32,6 +32,7 @@ import io.onedev.server.model.User; import io.onedev.server.security.SecurityUtils; import io.onedev.server.util.DateUtils; import io.onedev.server.util.Input; +import io.onedev.server.util.Referenceable; import io.onedev.server.util.criteria.Criteria; import io.onedev.server.web.behavior.WebSocketObserver; import io.onedev.server.web.component.build.ParamValuesLabel; @@ -276,13 +277,20 @@ public abstract class BuildSidePanel extends Panel { }); + add(new ReferencePanel("reference") { + + @Override + protected Referenceable getReferenceable() { + return getBuild(); + } + + }); + if (SecurityUtils.canManage(getBuild())) add(newDeleteLink("delete")); else add(new WebMarkupContainer("delete").setVisible(false)); - addOrReplace(new ReferencePanel("reference", getBuild())); - setOutputMarkupId(true); } diff --git a/server-core/src/main/java/io/onedev/server/web/component/build/side/build-side.css b/server-core/src/main/java/io/onedev/server/web/component/build/side/build-side.css index 073b509653..e9567d7647 100644 --- a/server-core/src/main/java/io/onedev/server/web/component/build/side/build-side.css +++ b/server-core/src/main/java/io/onedev/server/web/component/build/side/build-side.css @@ -27,3 +27,8 @@ .build-side>.properties>div:last-child>div { padding-bottom: 0; } + +.build-side>div>.head { + font-weight: 600; + margin-bottom: 1rem; +} \ No newline at end of file diff --git a/server-core/src/main/java/io/onedev/server/web/component/entity/reference/ReferencePanel.html b/server-core/src/main/java/io/onedev/server/web/component/entity/reference/ReferencePanel.html index d5eba81f01..044e975fd0 100644 --- a/server-core/src/main/java/io/onedev/server/web/component/entity/reference/ReferencePanel.html +++ b/server-core/src/main/java/io/onedev/server/web/component/entity/reference/ReferencePanel.html @@ -1,8 +1,11 @@ -
-
Reference:
- - - +
Reference
+
+
+ + + + +
diff --git a/server-core/src/main/java/io/onedev/server/web/component/entity/reference/ReferencePanel.java b/server-core/src/main/java/io/onedev/server/web/component/entity/reference/ReferencePanel.java index d4e1c3f369..40ba31b6d5 100644 --- a/server-core/src/main/java/io/onedev/server/web/component/entity/reference/ReferencePanel.java +++ b/server-core/src/main/java/io/onedev/server/web/component/entity/reference/ReferencePanel.java @@ -6,23 +6,22 @@ import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.model.Model; -public class ReferencePanel extends Panel { +@SuppressWarnings("serial") +public abstract class ReferencePanel extends Panel { - private Referenceable entity; - - public ReferencePanel(String id, Referenceable entity) { + public ReferencePanel(String id) { super(id); - this.entity = entity; } @Override protected void onInitialize() { super.onInitialize(); - String displayReference = String.format("%s#%d", entity.getProject(), entity.getNumber()); - String reference = entity.getPrefix() + " " + displayReference; + String reference = Referenceable.asReference(getReferenceable()); - add(new Label("reference", displayReference)); + add(new Label("reference", reference)); add(new CopyToClipboardLink("copy", Model.of(reference))); } + + protected abstract Referenceable getReferenceable(); } diff --git a/server-core/src/main/java/io/onedev/server/web/component/issue/side/IssueSidePanel.java b/server-core/src/main/java/io/onedev/server/web/component/issue/side/IssueSidePanel.java index 0b440b69c6..8ac355a06b 100644 --- a/server-core/src/main/java/io/onedev/server/web/component/issue/side/IssueSidePanel.java +++ b/server-core/src/main/java/io/onedev/server/web/component/issue/side/IssueSidePanel.java @@ -57,6 +57,7 @@ import io.onedev.server.search.entity.issue.StateCriteria; import io.onedev.server.security.SecurityUtils; import io.onedev.server.util.Input; import io.onedev.server.util.IssueUtils; +import io.onedev.server.util.Referenceable; import io.onedev.server.web.ajaxlistener.AppendLoadingIndicatorListener; import io.onedev.server.web.behavior.WebSocketObserver; import io.onedev.server.web.component.entity.watches.EntityWatchesPanel; @@ -107,13 +108,20 @@ public abstract class IssueSidePanel extends Panel { }); + addOrReplace(new ReferencePanel("reference") { + + @Override + protected Referenceable getReferenceable() { + return getIssue(); + } + + }); + if (SecurityUtils.canManageIssues(getProject())) addOrReplace(newDeleteLink("delete")); else addOrReplace(new WebMarkupContainer("delete").setVisible(false)); - addOrReplace(new ReferencePanel("reference", getIssue())); - super.onBeforeRender(); } diff --git a/server-core/src/main/java/io/onedev/server/web/page/project/pullrequests/detail/PullRequestDetailPage.java b/server-core/src/main/java/io/onedev/server/web/page/project/pullrequests/detail/PullRequestDetailPage.java index cf1bd98668..c9b6ae1984 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/project/pullrequests/detail/PullRequestDetailPage.java +++ b/server-core/src/main/java/io/onedev/server/web/page/project/pullrequests/detail/PullRequestDetailPage.java @@ -75,6 +75,7 @@ import io.onedev.server.search.entity.pullrequest.PullRequestQuery; import io.onedev.server.security.SecurityUtils; import io.onedev.server.util.DateUtils; import io.onedev.server.util.ProjectScopedNumber; +import io.onedev.server.util.Referenceable; import io.onedev.server.web.WebSession; import io.onedev.server.web.behavior.ReferenceInputBehavior; import io.onedev.server.web.behavior.WebSocketObserver; @@ -730,7 +731,14 @@ public abstract class PullRequestDetailPage extends ProjectPage implements PullR }); - fragment.add(new ReferencePanel("reference", getPullRequest())); + fragment.add(new ReferencePanel("reference") { + + @Override + protected Referenceable getReferenceable() { + return getPullRequest(); + } + + }); fragment.add(new EntityWatchesPanel("watches") {