You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

LinkPanel.java 4.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. /*
  2. * Copyright 2011 gitblit.com.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. package com.gitblit.wicket.panels;
  17. import org.apache.wicket.PageParameters;
  18. import org.apache.wicket.behavior.SimpleAttributeModifier;
  19. import org.apache.wicket.markup.html.WebPage;
  20. import org.apache.wicket.markup.html.basic.Label;
  21. import org.apache.wicket.markup.html.link.BookmarkablePageLink;
  22. import org.apache.wicket.markup.html.link.ExternalLink;
  23. import org.apache.wicket.markup.html.link.Link;
  24. import org.apache.wicket.markup.html.panel.Panel;
  25. import org.apache.wicket.model.IModel;
  26. import org.apache.wicket.model.Model;
  27. import com.gitblit.utils.StringUtils;
  28. import com.gitblit.wicket.WicketUtils;
  29. public class LinkPanel extends Panel {
  30. private static final long serialVersionUID = 1L;
  31. private final IModel<String> labelModel;
  32. public LinkPanel(String wicketId, String linkCssClass, String label,
  33. Class<? extends WebPage> clazz) {
  34. this(wicketId, null, linkCssClass, new Model<String>(label), clazz, null, false);
  35. }
  36. public LinkPanel(String wicketId, String linkCssClass, String label,
  37. Class<? extends WebPage> clazz, PageParameters parameters) {
  38. this(wicketId, null, linkCssClass, new Model<String>(label), clazz, parameters, false);
  39. }
  40. public LinkPanel(String wicketId, String linkCssClass, String label,
  41. Class<? extends WebPage> clazz, PageParameters parameters, boolean newWindow) {
  42. this(wicketId, null, linkCssClass, new Model<String>(label), clazz, parameters, newWindow);
  43. }
  44. public LinkPanel(String wicketId, String bootstrapIcon, String linkCssClass, String label,
  45. Class<? extends WebPage> clazz, PageParameters parameters, boolean newWindow) {
  46. this(wicketId, bootstrapIcon, linkCssClass, new Model<String>(label), clazz, parameters, newWindow);
  47. }
  48. public LinkPanel(String wicketId, String linkCssClass, IModel<String> model,
  49. Class<? extends WebPage> clazz, PageParameters parameters) {
  50. this(wicketId, null, linkCssClass, model, clazz, parameters, false);
  51. }
  52. public LinkPanel(String wicketId, String bootstrapIcon, String linkCssClass, IModel<String> model,
  53. Class<? extends WebPage> clazz, PageParameters parameters, boolean newWindow) {
  54. super(wicketId);
  55. this.labelModel = model;
  56. Link<Void> link = null;
  57. if (parameters == null) {
  58. link = new BookmarkablePageLink<Void>("link", clazz);
  59. } else {
  60. link = new BookmarkablePageLink<Void>("link", clazz, parameters);
  61. }
  62. if (newWindow) {
  63. link.add(new SimpleAttributeModifier("target", "_blank"));
  64. }
  65. if (linkCssClass != null) {
  66. link.add(new SimpleAttributeModifier("class", linkCssClass));
  67. }
  68. Label icon = new Label("icon");
  69. if (StringUtils.isEmpty(bootstrapIcon)) {
  70. link.add(icon.setVisible(false));
  71. } else {
  72. WicketUtils.setCssClass(icon, bootstrapIcon);
  73. link.add(icon);
  74. }
  75. link.add(new Label("label", labelModel));
  76. add(link);
  77. }
  78. public LinkPanel(String wicketId, String linkCssClass, String label, String href) {
  79. this(wicketId, linkCssClass, label, href, false);
  80. }
  81. public LinkPanel(String wicketId, String linkCssClass, String label, String href,
  82. boolean newWindow) {
  83. super(wicketId);
  84. this.labelModel = new Model<String>(label);
  85. ExternalLink link = new ExternalLink("link", href);
  86. if (newWindow) {
  87. link.add(new SimpleAttributeModifier("target", "_blank"));
  88. }
  89. if (linkCssClass != null) {
  90. link.add(new SimpleAttributeModifier("class", linkCssClass));
  91. }
  92. link.add(new Label("icon").setVisible(false));
  93. link.add(new Label("label", labelModel));
  94. add(link);
  95. }
  96. }