001 package org.sonar.api.web.gwt.client.widgets;
002
003 import com.google.gwt.user.client.ui.ClickListener;
004 import com.google.gwt.user.client.ui.Hyperlink;
005 import com.google.gwt.user.client.ui.Widget;
006
007 public class ExpandCollapseLink extends Hyperlink {
008
009 private Widget expandOrCollapse;
010
011 public ExpandCollapseLink(Widget expandOrCollapse) {
012 super();
013 this.expandOrCollapse = expandOrCollapse;
014 setText(getLinkLabel(!expandOrCollapse.isVisible()));
015 getElement().setId("expand-" + expandOrCollapse.getElement().getId());
016 setStyleName("expandCollapseLink");
017 final ExpandCollapseLink link = this;
018 this.addClickListener(new ClickListener() {
019 public void onClick(Widget sender) {
020 link.toggle();
021 }
022 });
023 getElement().getFirstChildElement().setAttribute("href", "#");
024 }
025
026 public void toggle() {
027 boolean visible = expandOrCollapse.isVisible();
028 setText(getLinkLabel(visible));
029 expandOrCollapse.setVisible(!visible);
030 }
031
032 protected String getLinkLabel(boolean show) {
033 return (show ? "expand" : "collapse");
034 }
035
036 }