Author: lgiessmann Date: Thu Jul 14 08:41:08 2011 New Revision: 619
Log: gdl-frontend: Widgets: implemented positioning of elements placed within GdlView instances
Added: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/value/PositionStyleValue.java Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/GdlPosition.java branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/container/GdlList.java branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/container/GdlUnit.java branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/view/GdlView.java
Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/GdlPosition.java ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/GdlPosition.java Thu Jul 14 05:05:36 2011 (r618) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/GdlPosition.java Thu Jul 14 08:41:08 2011 (r619) @@ -3,6 +3,8 @@ import java.util.ArrayList;
import com.google.gwt.core.client.JsArray; +import com.google.gwt.user.client.DOM; +import com.google.gwt.user.client.ui.Widget;
import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Occurrence; import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Topic; @@ -107,4 +109,15 @@ throw new InvalidGdlSchemaException("a position style value must be one of static, relative or absolute, but is " + positionStyleOcc.getValue()); } } + + + public void setAttributes(Widget widget) throws InvalidGdlSchemaException{ + if(widget == null) return; + + DOM.setStyleAttribute(widget.getElement(), "position", this.getPositionStyle().getCssValue()); + if(this.getTop() != null) DOM.setStyleAttribute(widget.getElement(), "top", this.getTop().getCssValue()); + if(this.getRight() != null) DOM.setStyleAttribute(widget.getElement(), "right", this.getTop().getCssValue()); + if(this.getBottom() != null) DOM.setStyleAttribute(widget.getElement(), "bottom", this.getTop().getCssValue()); + if(this.getLeft() != null) DOM.setStyleAttribute(widget.getElement(), "left", this.getTop().getCssValue()); + } }
Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/container/GdlList.java ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/container/GdlList.java Thu Jul 14 05:05:36 2011 (r618) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/container/GdlList.java Thu Jul 14 08:41:08 2011 (r619) @@ -377,7 +377,7 @@
@Override - public GdlVisibleObject append(Topic ancestor, Topic current) throws InvalidGdlSchemaException { + public GdlVisibleObject append(Topic ancestor, Topic current) throws InvalidGdlSchemaException, ExecutionException { // TODO Auto-generated method stub return null;
Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/container/GdlUnit.java ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/container/GdlUnit.java Thu Jul 14 05:05:36 2011 (r618) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/container/GdlUnit.java Thu Jul 14 08:41:08 2011 (r619) @@ -1253,7 +1253,7 @@ @Override - public GdlVisibleObject append(Topic ancestor, Topic current) throws InvalidGdlSchemaException { + public GdlVisibleObject append(Topic ancestor, Topic current) throws InvalidGdlSchemaException, ExecutionException { // TODO: implement return null; }
Added: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/value/PositionStyleValue.java ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/value/PositionStyleValue.java Thu Jul 14 08:41:08 2011 (r619) @@ -0,0 +1,14 @@ +package us.isidor.gdl.anaToMia.Widgets.value; + +public enum PositionStyleValue implements CssValue{ + STATIC, + RELATIVE, + ABSOLUTE; + + + @Override + public String getCssValue() { + return this.toString().toLowerCase(); + } + +}
Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/view/GdlView.java ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/view/GdlView.java Thu Jul 14 05:05:36 2011 (r618) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/view/GdlView.java Thu Jul 14 08:41:08 2011 (r619) @@ -4,18 +4,22 @@
import com.google.gwt.core.client.JsArray; import com.google.gwt.event.dom.client.ClickHandler; +import com.google.gwt.user.client.DOM; +import com.google.gwt.user.client.ui.Widget;
import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Association; import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Name; import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Role; import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Topic; import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.TopicMap; +import us.isidor.gdl.anaToMia.Widgets.base.GdlPosition; import us.isidor.gdl.anaToMia.Widgets.base.GdlPsis; import us.isidor.gdl.anaToMia.Widgets.base.GdlVisibleObject; import us.isidor.gdl.anaToMia.Widgets.base.IGdlContainer; import us.isidor.gdl.anaToMia.Widgets.base.IGdlHasValue; import us.isidor.gdl.anaToMia.Widgets.base.TmHelper; import us.isidor.gdl.anaToMia.Widgets.environment.ExecutionException; +import us.isidor.gdl.anaToMia.Widgets.environment.GdlInstantiator; import us.isidor.gdl.anaToMia.Widgets.environment.InvalidGdlSchemaException;
@@ -85,13 +89,23 @@ // by using it's defined position style depending on the GdlVisibleObject // represented by ancestor. If ancestor is null current is the first topic @Override - public GdlVisibleObject append(Topic ancestor, Topic current) throws InvalidGdlSchemaException { - // TODO: getFirstContainee => change the behavior of getting the first topic + public GdlVisibleObject append(Topic ancestor, Topic current) throws InvalidGdlSchemaException, ExecutionException { + if(ancestor == null || current == null) throw new ExecutionException("to append "" + TmHelper.getAnyIdOfTopic(current) + "" on "" + TmHelper.getAnyIdOfTopic(ancestor) + "" both topics must be present"); + GdlPosition position = new GdlPosition(TmHelper.getPositionOf(ancestor, current)); - // TODO: implement - + GdlVisibleObject newObj = GdlInstantiator.instantiate(current); + GdlVisibleObject oldObj = null; + for (Widget widget : super.subElements){ + if(((GdlVisibleObject)widget).getTmRepresentative().equals(ancestor)){ + oldObj = (GdlVisibleObject)widget; + break; + } + } - return null; + if(this.getTmRepresentative().equals(ancestor))this.mainPanel.add(newObj); + else DOM.insertBefore(this.mainPanel.getElement(), newObj.getElement(), oldObj.getElement()); + position.setAttributes(newObj); + return newObj; }