All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.googlecode.mgwt.ui.client.widget.tabbar.TabBarButtonBase Maven / Gradle / Ivy

/*
 * Copyright 2010 Daniel Kurka
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
package com.googlecode.mgwt.ui.client.widget.tabbar;

import com.google.gwt.dom.client.Element;
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.uibinder.client.UiFactory;
import com.google.gwt.uibinder.client.UiField;

import com.googlecode.mgwt.ui.client.util.IconHandler;
import com.googlecode.mgwt.ui.client.widget.button.ButtonBase;

/**
 * The base class for all tab bar buttonss
 *
 * @author Daniel Kurka
 */

public class TabBarButtonBase extends ButtonBase {
  @UiField
  public Element icon;
  @UiField
  public Element text;

  private TabBarAppearance appearance;

  protected final ImageResource selectedResource;
  protected final ImageResource imageResource;
  private String iconColor;
  private String iconSelectedColor;
  private boolean selected;

  public TabBarButtonBase(TabBarAppearance appearance, ImageResource imageResource, ImageResource selectedResource) {
    super(appearance);
    this.appearance = appearance;
    this.imageResource = imageResource;
    this.selectedResource = selectedResource;
    setElement(this.appearance.uiBinder().createAndBindUi(this));
    this.iconColor = appearance.css().BUTTON_BACKGROUND_COLOR();
    this.iconSelectedColor = appearance.css().BUTTON_BACKGROUND_SELECTED_COLOR();

    IconHandler.setIcons(icon, imageResource, iconColor);
  }

  public void setSelected(boolean selected) {
    this.selected = selected;
    if (selected) {
      addStyleName(this.appearance.css().selected());
    } else {
      removeStyleName(this.appearance.css().selected());
    }
    updateIcon();
  }

  @Override
  public String getText() {
    return icon.getInnerText();
  }

  @Override
  public void setText(String newText) {
    text.setInnerText(newText);
  }

  @UiFactory
  public TabBarAppearance getAppearance() {
	  return appearance;
  }

  public void setIconColor(String iconColor) {
    this.iconColor = iconColor;
    updateIcon();
  }

  public void setIconSelectedColor(String iconSelectedColor) {
    this.iconSelectedColor = iconSelectedColor;
    updateIcon();
  }

  protected void updateIcon() {
    if (selected) {
      if (selectedResource != null) {
        IconHandler.setIcons(icon, selectedResource, iconSelectedColor);
      } else {
        IconHandler.setIcons(icon, imageResource, iconSelectedColor);
      }
    } else {
      IconHandler.setIcons(icon, imageResource, iconColor);
    }
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy