package com.eas.grid.columns.header;
import com.eas.bound.ModelDecoratorBox;
import com.eas.bound.ModelFormattedField;
import com.eas.core.HasPublished;
import com.eas.grid.DraggableHeader;
import com.eas.grid.columns.ModelColumn;
import com.eas.ui.HasJsName;
import com.eas.ui.PublishedColor;
import com.eas.ui.PublishedFont;
import com.google.gwt.core.client.JavaScriptObject;
public class ModelHeaderNode extends HeaderNode<JavaScriptObject> implements HasJsName, HasPublished {
protected JavaScriptObject published;
protected String name;
public ModelHeaderNode() {
super();
column = new ModelColumn();
((ModelColumn)column).setEditor(new ModelFormattedField());
header = new DraggableHeader<JavaScriptObject>("", null, column, this);
}
@Override
public ModelHeaderNode lightCopy(){
ModelHeaderNode copied = new ModelHeaderNode();
copied.setColumn(column);
copied.setHeader(header);
return copied;
}
public PublishedColor getBackground() {
return ((DraggableHeader<?>)header).getBackground();
}
public void setBackground(PublishedColor aValue) {
((DraggableHeader<?>)header).setBackground(aValue);
}
public PublishedColor getForeground() {
return ((DraggableHeader<?>)header).getForeground();
}
public void setForeground(PublishedColor aValue) {
((DraggableHeader<?>)header).setForeground(aValue);
}
public PublishedFont getFont() {
return ((DraggableHeader<?>)header).getFont();
}
public void setFont(PublishedFont aValue) {
((DraggableHeader<?>)header).setFont(aValue);
}
public double getMinWidth() {
return ((ModelColumn) column).getMinWidth();
}
public void setMinWidth(double aValue) {
((ModelColumn) column).setMinWidth(aValue);
}
public double getMaxWidth() {
return ((ModelColumn) column).getMaxWidth();
}
public void setMaxWidth(double aValue) {
((ModelColumn) column).setMaxWidth(aValue);
}
public double getPreferredWidth() {
return ((ModelColumn) column).getDesignedWidth();
}
public void setPreferredWidth(double aValue) {
((ModelColumn) column).setWidth(aValue);
}
public String getField() {
return ((ModelColumn) column).getField();
}
public void setField(String aValue) {
((ModelColumn) column).setField(aValue);
}
public String getTitle() {
return ((DraggableHeader<JavaScriptObject>) header).getTitle();
}
public void setTitle(String aValue) {
((DraggableHeader<JavaScriptObject>) header).setTitle(aValue);
}
public boolean isResizable() {
return ((DraggableHeader<JavaScriptObject>) header).isResizable();
}
public void setResizable(boolean aValue) {
((DraggableHeader<JavaScriptObject>) header).setResizable(aValue);
}
public boolean isMoveable() {
return ((DraggableHeader<JavaScriptObject>) header).isMoveable();
}
public void setMoveable(boolean aValue) {
((DraggableHeader<JavaScriptObject>) header).setMoveable(aValue);
}
public boolean isVisible() {
return ((ModelColumn) column).isVisible();
}
public void setVisible(boolean aValue) {
((ModelColumn) column).setVisible(aValue);
}
@Override
public String getJsName() {
return name;
}
@Override
public void setJsName(String aValue) {
name = aValue;
}
public double getWidth() {
return ((ModelColumn) column).getWidth();
}
public void setWidth(double aValue) {
((ModelColumn) column).setWidth(aValue);
}
public boolean isReadonly() {
return ((ModelColumn) column).isReadonly();
}
public void setReadonly(boolean aValue) {
((ModelColumn) column).setReadonly(aValue);
}
public boolean isSortable() {
return ((ModelColumn) column).isSortable();
}
public String getSortField() {
return ((ModelColumn) column).getSortField();
}
public void setSortField(String aValue) {
((ModelColumn) column).setSortField(aValue);
}
public void setSortable(boolean aValue) {
((ModelColumn) column).setSortable(aValue);
}
public JavaScriptObject getOnRender() {
return ((ModelColumn) column).getOnRender();
}
public void setOnRender(JavaScriptObject aValue) {
((ModelColumn) column).setOnRender(aValue);
}
public JavaScriptObject getOnSelect() {
return ((ModelColumn) column).getOnSelect();
}
public void setOnSelect(JavaScriptObject aValue) {
((ModelColumn) column).setOnSelect(aValue);
}
@Override
public JavaScriptObject getPublished() {
return published;
}
@Override
public void setPublished(JavaScriptObject aValue) {
if (published != aValue) {
published = aValue;
((ModelColumn) column).setPublished(published);
if (published != null) {
publish(this, published);
}
}
}
public void sort(){
((ModelColumn) column).sort();
}
public void sortDesc(){
((ModelColumn) column).sortDesc();
}
public void unsort(){
((ModelColumn) column).unsort();
}
public JavaScriptObject getJsEditor(){
return ((ModelColumn) column).getEditor().getPublished();
}
public void setEditor(ModelDecoratorBox<?> aEditor){
((ModelColumn) column).setEditor(aEditor);
}
private static native void publish(ModelHeaderNode aColumn, JavaScriptObject aPublished)/*-{
Object.defineProperty(aPublished, "editor", {
get : function() {
return aColumn.@com.eas.grid.columns.header.ModelHeaderNode::getJsEditor()();
},
set : function(aValue) {
aColumn.@com.eas.grid.columns.header.ModelHeaderNode::setEditor(Lcom/eas/bound/ModelDecoratorBox;)(aValue && aValue.unwrap ? aValue.unwrap() : null);
}
});
Object.defineProperty(aPublished, "field", {
get : function() {
return aColumn.@com.eas.grid.columns.header.ModelHeaderNode::getField()();
},
set : function(aValue) {
aColumn.@com.eas.grid.columns.header.ModelHeaderNode::setField(Ljava/lang/String;)(aValue != null ? ''+aValue : '');
}
});
Object.defineProperty(aPublished, "visible", {
get : function() {
return aColumn.@com.eas.grid.columns.header.ModelHeaderNode::isVisible()();
},
set : function(aValue) {
aColumn.@com.eas.grid.columns.header.ModelHeaderNode::setVisible(Z)((false != aValue));
}
});
Object.defineProperty(aPublished, "minWidth", {
get : function() {
return aColumn.@com.eas.grid.columns.header.ModelHeaderNode::getMinWidth()();
},
set : function(aValue) {
aColumn.@com.eas.grid.columns.header.ModelHeaderNode::setMinWidth(D)(aValue != null ? aValue : 0);
}
});
Object.defineProperty(aPublished, "maxWidth", {
get : function() {
return aColumn.@com.eas.grid.columns.header.ModelHeaderNode::getMaxWidth()();
},
set : function(aValue) {
aColumn.@com.eas.grid.columns.header.ModelHeaderNode::setMaxWidth(D)(aValue != null ? aValue : 0);
}
});
Object.defineProperty(aPublished, "preferredWidth", {
get : function() {
return aColumn.@com.eas.grid.columns.header.ModelHeaderNode::getPreferredWidth()();
},
set : function(aValue) {
aColumn.@com.eas.grid.columns.header.ModelHeaderNode::setPreferredWidth(D)(aValue != null ? aValue : 0);
}
});
Object.defineProperty(aPublished, "width", {
get : function() {
return aColumn.@com.eas.grid.columns.header.ModelHeaderNode::getWidth()();
},
set : function(aValue) {
aColumn.@com.eas.grid.columns.header.ModelHeaderNode::setWidth(D)(aValue != null ? aValue : 0);
}
});
Object.defineProperty(aPublished, "title", {
get : function() {
return aColumn.@com.eas.grid.columns.header.ModelHeaderNode::getTitle()();
},
set : function(aValue) {
aColumn.@com.eas.grid.columns.header.ModelHeaderNode::setTitle(Ljava/lang/String;)(aValue != null ? ''+aValue : '');
}
});
Object.defineProperty(aPublished, "resizable", {
get : function() {
return aColumn.@com.eas.grid.columns.header.ModelHeaderNode::isResizable()();
},
set : function(aValue) {
aColumn.@com.eas.grid.columns.header.ModelHeaderNode::setResizable(Z)(!!aValue);
}
});
Object.defineProperty(aPublished, "movable", {
get : function() {
return aColumn.@com.eas.grid.columns.header.ModelHeaderNode::isMoveable()();
},
set : function(aValue) {
aColumn.@com.eas.grid.columns.header.ModelHeaderNode::setMoveable(Z)(!!aValue);
}
});
Object.defineProperty(aPublished, "readonly", {
get : function() {
return aColumn.@com.eas.grid.columns.header.ModelHeaderNode::isReadonly()();
},
set : function(aValue) {
aColumn.@com.eas.grid.columns.header.ModelHeaderNode::setReadonly(Z)(!!aValue);
}
});
Object.defineProperty(aPublished, "sortable", {
get : function() {
return aColumn.@com.eas.grid.columns.header.ModelHeaderNode::isSortable()();
},
set : function(aValue) {
aColumn.@com.eas.grid.columns.header.ModelHeaderNode::setSortable(Z)(!!aValue);
}
});
Object.defineProperty(aPublished, "sortField", {
get : function() {
return aColumn.@com.eas.grid.columns.header.ModelHeaderNode::getSortField()();
},
set : function(aValue) {
aColumn.@com.eas.grid.columns.header.ModelHeaderNode::setSortField(Ljava/lang/String;)(aValue != null ? ''+aValue : '');
}
});
Object.defineProperty(aPublished, "foreground", {
get : function() {
return aColumn.@com.eas.grid.columns.header.ModelHeaderNode::getForeground()()();
},
set : function(aValue) {
aColumn.@com.eas.grid.columns.header.ModelHeaderNode::setForeground(Lcom/eas/ui/PublishedColor;)(aValue);
}
});
Object.defineProperty(aPublished, "background", {
get : function() {
return aColumn.@com.eas.grid.columns.header.ModelHeaderNode::getBackground()()();
},
set : function(aValue) {
aColumn.@com.eas.grid.columns.header.ModelHeaderNode::setBackground(Lcom/eas/ui/PublishedColor;)(aValue);
}
});
Object.defineProperty(aPublished, "font", {
get : function() {
return aColumn.@com.eas.grid.columns.header.ModelHeaderNode::getFont()()();
},
set : function(aValue) {
aColumn.@com.eas.grid.columns.header.ModelHeaderNode::setFont(Lcom/eas/ui/PublishedFont;)(aValue);
}
});
Object.defineProperty(aPublished, "onRender", {
get : function() {
return aColumn.@com.eas.grid.columns.header.ModelHeaderNode::getOnRender()();
},
set : function(aValue) {
aColumn.@com.eas.grid.columns.header.ModelHeaderNode::setOnRender(Lcom/google/gwt/core/client/JavaScriptObject;)(aValue);
}
});
Object.defineProperty(aPublished, "onSelect", {
get : function() {
return aColumn.@com.eas.grid.columns.header.ModelHeaderNode::getOnSelect()();
},
set : function(aValue) {
aColumn.@com.eas.grid.columns.header.ModelHeaderNode::setOnSelect(Lcom/google/gwt/core/client/JavaScriptObject;)(aValue);
}
});
aPublished.sort = function() {
aColumn.@com.eas.grid.columns.header.ModelHeaderNode::sort()();
};
aPublished.sortDesc = function() {
aColumn.@com.eas.grid.columns.header.ModelHeaderNode::sortDesc()();
};
aPublished.unsort = function() {
aColumn.@com.eas.grid.columns.header.ModelHeaderNode::unsort()();
};
aPublished.removeColumnNode = function(aColumnFacade){
if(aColumnFacade && aColumnFacade.unwrap)
return aColumn.@com.eas.grid.columns.header.ModelHeaderNode::removeColumnNode(Lcom/eas/grid/columns/header/HeaderNode;)(aColumnFacade.unwrap());
else
return false;
};
aPublished.addColumnNode = function(aColumnFacade){
if(aColumnFacade && aColumnFacade.unwrap)
aColumn.@com.eas.grid.columns.header.ModelHeaderNode::addColumnNode(Lcom/eas/grid/columns/header/HeaderNode;)(aColumnFacade.unwrap());
};
aPublished.insertColumnNode = function(aIndex, aColumnFacade){
if(aColumnFacade && aColumnFacade.unwrap)
aColumn.@com.eas.grid.columns.header.ModelHeaderNode::insertColumnNode(ILcom/eas/grid/columns/header/HeaderNode;)(aIndex, aColumnFacade.unwrap());
};
aPublished.columnNodes = function(){
var nChildren = aColumn.@com.eas.grid.columns.header.ModelHeaderNode::getChildren()();
var nChildrenCount = nChildren.@java.util.List::size()();
var res = [];
for(var c = 0; c < nChildrenCount; c++){
var nNode = nChildren.@java.util.List::get(I)(c);
var jsNode = nNode.@com.eas.core.HasPublished::getPublished()();
res.push(jsNode);
}
return res;
};
}-*/;
}