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

com.sencha.gxt.theme.base.client.frame.TableFrame Maven / Gradle / Ivy

/**
 * Ext GWT 3.0.0-beta2 - Ext for GWT
 * Copyright(c) 2007-2011, Sencha, Inc.
 * [email protected]
 *
 * http://sencha.com/license
 */
package com.sencha.gxt.theme.base.client.frame;

import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.NativeEvent;
import com.google.gwt.resources.client.CssResource;
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.safecss.shared.SafeStyles;
import com.google.gwt.safehtml.shared.SafeHtml;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
import com.sencha.gxt.core.client.XTemplates;
import com.sencha.gxt.core.client.dom.XElement;
import com.sencha.gxt.core.client.resources.StyleInjectorHelper;

public class TableFrame implements Frame {

  public interface Template extends XTemplates {
    @XTemplate(source = "TableFrame.html")
    SafeHtml render(TableFrameStyle style, SafeHtml content, SafeStyles styles);
  }
  
  public interface TableFrameResources {
    
    ImageResource bottomBorder();

    ImageResource bottomLeftBorder();

    ImageResource bottomRightBorder();

    ImageResource leftBorder();

    ImageResource rightBorder();

    ImageResource topBorder();

    ImageResource topLeftBorder();

    ImageResource topRightBorder();
    
    TableFrameStyle style();
  }

  public interface TableFrameStyle extends CssResource {
    
    String frame();

    String bottom();

    String bottomLeft();

    String bottomRight();

    String left();

    String right();

    String top();

    String topLeft();

    String topRight();

    String content();
    
    String contentArea();
    
    String over();
    
    String pressed();

  }

  private Template template = GWT.create(Template.class);
  private final TableFrameResources resources;
  private TableFrameStyle style;

  public TableFrame(TableFrameResources resources) {
    this.resources = resources;
    this.style = resources.style();

    StyleInjectorHelper.ensureInjected(this.style, true);
  }
  
  public TableFrameStyle getStyle() {
    return style;
  }
  
  public XElement getHeaderElem(XElement parent) {
    return parent.selectNode("." + style.top());
  }
  
  public TableFrameResources getResources() {
    return resources;
  }
  
  public XElement getContentElem(XElement parent) {
    return parent.selectNode("." + style.content());
  }

  @Override
  public void render(SafeHtmlBuilder builder, SafeHtml content, SafeStyles styles) {
    builder.append(template.render(style, content, styles));
  }

  @Override
  public void onOver(XElement parent, boolean over, NativeEvent event) {
    parent.setClassName(style.over(), over);
  }

  @Override
  public void onPress(XElement parent, boolean pressed, NativeEvent event) {
    parent.setClassName(style.pressed(), pressed);
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy