Package org.geomajas.widget.utility.smartgwt.client.ribbon

Source Code of org.geomajas.widget.utility.smartgwt.client.ribbon.RibbonGroupLayout

/*
* This is part of Geomajas, a GIS framework, http://www.geomajas.org/.
*
* Copyright 2008-2011 Geosparc nv, http://www.geosparc.com/, Belgium.
*
* The program is available in open source according to the GNU Affero
* General Public License. All contributions in this program are covered
* by the Geomajas Contributors License Agreement. For full licensing
* details, see LICENSE.txt in the project root.
*/

package org.geomajas.widget.utility.smartgwt.client.ribbon;

import java.util.ArrayList;
import java.util.List;

import org.geomajas.widget.utility.client.ribbon.RibbonColumn;
import org.geomajas.widget.utility.client.ribbon.RibbonGroup;

import com.smartgwt.client.types.Alignment;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.HTMLFlow;
import com.smartgwt.client.widgets.layout.HLayout;
import com.smartgwt.client.widgets.layout.VLayout;

/**
* A SmartGWT ribbon group. Groups together a list of SmartGWT ribbon columns.
*
* @author Pieter De Graef
*/
public class RibbonGroupLayout extends VLayout implements RibbonGroup {

  private String title;

  private boolean showTitle;

  private List<RibbonColumn> columns = new ArrayList<RibbonColumn>();

  private HLayout memberLayout;

  private HTMLFlow titleLabel;

  private String buttonBaseStyle = "ribbonButton";

  // ------------------------------------------------------------------------
  // Constructors:
  // ------------------------------------------------------------------------

  /**
   * Initialize this group by specifying it's title.
   *
   * @param title
   *            The groups title.
   */
  public RibbonGroupLayout(final String title) {
    this.title = title;
    setAutoWidth();
    setHeight100();

    memberLayout = new HLayout(10);
    memberLayout.setStyleName("ribbonGroupBody");
    memberLayout.setAutoWidth();
    setHeight100();

    titleLabel = new HTMLFlow(title);
    titleLabel.setHeight("16px");

    titleLabel.setLayoutAlign(Alignment.CENTER);
    titleLabel.setStyleName("ribbonGroupTitle");
    titleLabel.setVisible(showTitle);

    setStyleName("ribbonGroup");
    addMember(memberLayout);
    addMember(titleLabel);
  }

  // ------------------------------------------------------------------------
  // RibbonGroup implementation:
  // ------------------------------------------------------------------------

  public RibbonColumn getColumn(int index) {
    return columns.get(index);
  }

  public void addColumn(RibbonColumn ribbonColumn) {
    if (ribbonColumn == null) {
      throw new NullPointerException("Cannot add RibbonColumn with null value.");
    }
    ribbonColumn.setButtonBaseStyle(buttonBaseStyle);
    columns.add(ribbonColumn);
    memberLayout.addMember(ribbonColumn.asWidget());
  }

  public void addColumn(RibbonColumn ribbonColumn, int index) {
    if (ribbonColumn == null) {
      throw new NullPointerException("Cannot add RibbonColumn with null value.");
    }
    ribbonColumn.setButtonBaseStyle(buttonBaseStyle);
    columns.add(ribbonColumn);
    memberLayout.addMember(ribbonColumn.asWidget(), index);
  }

  public void removeColumn(RibbonColumn ribbonColumn) {
    if (ribbonColumn == null) {
      throw new NullPointerException("Cannot remove RibbonColumn with null value.");
    }
    columns.remove(ribbonColumn);
    memberLayout.removeMember((Canvas) ribbonColumn.asWidget());
  }

  public void removeColumn(int index) {
    removeColumn(getColumn(index));
  }

  public String getId() {
    return id;
  }

  public void setShowTitle(boolean showTitle) {
    this.showTitle = showTitle;
    titleLabel.setVisible(showTitle);
  }

  public boolean isShowTitle() {
    return showTitle;
  }

  public String getTitle() {
    return title;
  }

  public void setTitle(String title) {
    this.title = title;
  }

  // ------------------------------------------------------------------------
  // SmartGWT method overrides:
  // ------------------------------------------------------------------------

  @Override
  public void setStyleName(String styleName) {
    super.setStyleName(styleName);
    memberLayout.setStyleName(styleName + "Body");
    titleLabel.setStyleName(styleName + "Title");
    buttonBaseStyle = styleName.substring(0, styleName.length() - 5) + "Button";
    for (RibbonColumn column : columns) {
      column.setButtonBaseStyle(buttonBaseStyle);
    }
  }
}
TOP

Related Classes of org.geomajas.widget.utility.smartgwt.client.ribbon.RibbonGroupLayout

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.