[isidorus-cvs] r584 - in branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets: base container text

lgiessmann at common-lisp.net lgiessmann at common-lisp.net
Fri Jul 8 13:22:54 UTC 2011


Author: lgiessmann
Date: Fri Jul  8 06:22:52 2011
New Revision: 584

Log:
gdl-frontend: Widgets: implemented the setters of all GDL properties of GdlTextObject in the class GdlTitle

Added:
   branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/text/GdlTitle.java
Modified:
   branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/GdlPsis.java
   branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/GdlVisibleObject.java
   branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/TestClass.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/text/GdlTextObject.java

Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/GdlPsis.java
==============================================================================
--- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/GdlPsis.java	Fri Jul  8 04:01:43 2011	(r583)
+++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/GdlPsis.java	Fri Jul  8 06:22:52 2011	(r584)
@@ -158,6 +158,7 @@
 		public final static String gdlRows = gdl + "rows";
 		public final static String gdlCols = gdl + "cols";
 		public final static String gdlResize = gdl + "resize";
+		public final static String gdlTitleOrder = gdl + "title-order";
 		public final static String gdlUnitName = gdl + "unit-name";
 		public final static String gdlUnitBorderWidth = gdl + "unit-border-width";
 		public final static String gdlUnitBorderTopWidth = gdl + "unit-border-top-width";

Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/GdlVisibleObject.java
==============================================================================
--- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/GdlVisibleObject.java	Fri Jul  8 04:01:43 2011	(r583)
+++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/GdlVisibleObject.java	Fri Jul  8 06:22:52 2011	(r584)
@@ -21,6 +21,7 @@
 import us.isidor.gdl.anaToMia.Widgets.values.CursorValue;
 import us.isidor.gdl.anaToMia.Widgets.values.NumUnitValue;
 import com.google.gwt.core.client.JsArray;
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.dom.client.Style.Display;
 import com.google.gwt.dom.client.Style.Float;
 import com.google.gwt.dom.client.Style.VerticalAlign;
@@ -101,6 +102,18 @@
 		this.containerPanel.add(widget);
 	}
 	
+	
+	public static void replaceStyleProperty(Element elem, String styleName, String styleValue){
+		String oldStyle = elem.getAttribute("style");
+		if(oldStyle.matches("(^| |;)" + styleName + " *:")){
+			elem.setAttribute("style", oldStyle.replaceAll(styleName + ":.+;", styleName + ": " + styleValue + ";"));
+		} else {
+			elem.setAttribute("style", oldStyle + " " + styleName + ": " + styleValue + ";");
+		}
+			
+	}
+	
+	
 
 	// a helper method that returns all occurrences of the type bound to the passed PSI
 	protected JsArray<Occurrence> getOccurrences(String occurrenceType){

Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/TestClass.java
==============================================================================
--- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/TestClass.java	Fri Jul  8 04:01:43 2011	(r583)
+++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/TestClass.java	Fri Jul  8 06:22:52 2011	(r584)
@@ -7,6 +7,7 @@
 import us.isidor.gdl.anaToMia.Widgets.isidorus.LoadSchemaCallback;
 import us.isidor.gdl.anaToMia.Widgets.text.GdlListBox;
 import us.isidor.gdl.anaToMia.Widgets.text.GdlText;
+import us.isidor.gdl.anaToMia.Widgets.text.GdlTitle;
 import us.isidor.gdl.anaToMia.Widgets.values.CursorValue;
 import com.google.gwt.core.client.EntryPoint;
 import com.google.gwt.event.dom.client.ClickEvent;
@@ -84,6 +85,7 @@
 			Topic gdlDisplay = gdlPanel.getSchemaTm().createTopicBySubjectIdentifier(gdlPanel.getSchemaTm().createLocator(GdlPsis.OccurrenceType.gdlDisplay));
 			Topic gdlContentOrientation = gdlPanel.getSchemaTm().createTopicBySubjectIdentifier(gdlPanel.getSchemaTm().createLocator(GdlPsis.OccurrenceType.gdlContentOrientation));
 			Topic gdlListStyleType = gdlPanel.getSchemaTm().createTopicBySubjectIdentifier(gdlPanel.getSchemaTm().createLocator(GdlPsis.OccurrenceType.gdlListStyleType));
+			Topic gdlDirection = gdlPanel.getSchemaTm().createTopicBySubjectIdentifier(gdlPanel.getSchemaTm().createLocator(GdlPsis.OccurrenceType.gdlDirection));
 			
 			
 			tmpRepresentative.createOccurrence(gdlId, "ID_1", null);
@@ -109,6 +111,7 @@
 			tmpRepresentative.createOccurrence(gdlDisplay, "inline", null);
 			tmpRepresentative.createOccurrence(gdlContentOrientation, "vertical", null);
 			tmpRepresentative.createOccurrence(gdlListStyleType, "square", null);
+			tmpRepresentative.createOccurrence(gdlDirection, "rtl", null);
 			Occurrence bgcHover = tmpRepresentative.createOccurrence(gdlBackgroundColor, "green", null);
 			bgcHover.addTheme(gdlHover);
 			Occurrence bgcActive = tmpRepresentative.createOccurrence(gdlBackgroundColor, "purple", null);
@@ -119,7 +122,7 @@
 			fsHover.addTheme(gdlHover);
 			
 			
-			GdlList tmp = new GdlList(tmpRepresentative);
+			GdlTitle tmp = new GdlTitle(tmpRepresentative);
 			this.mainPanel.add(tmp);
 		}catch(Exception e){
 			e.printStackTrace();

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	Fri Jul  8 04:01:43 2011	(r583)
+++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/container/GdlList.java	Fri Jul  8 06:22:52 2011	(r584)
@@ -3,8 +3,8 @@
 import java.util.ArrayList;
 import com.google.gwt.dom.client.Element;
 import com.google.gwt.user.client.DOM;
+import com.google.gwt.user.client.ui.AbsolutePanel;
 import com.google.gwt.user.client.ui.Composite;
-import com.google.gwt.user.client.ui.SimplePanel;
 import com.google.gwt.user.client.ui.Widget;
 import com.google.gwt.dom.client.Node;
 import com.google.gwt.event.dom.client.BlurEvent;
@@ -44,18 +44,18 @@
 	// some constructors
 	protected GdlList() throws InvalidGdlSchemaException, ExecutionException {
 		super();
-		this.initList(this.getOrdered());
+		this.createList();
 	}
 	
 	
 	public GdlList(Topic tmRepresentative) throws InvalidGdlSchemaException, ExecutionException{
 		super(tmRepresentative);
-		this.initList(this.getOrdered());
+		this.createList();
 	}
 	
 	
 	// sets the list Element to either ol or ul depending on the gdl:ordered property
-	public void initList(boolean ordered) throws InvalidGdlSchemaException, ExecutionException {
+	public void createList() throws InvalidGdlSchemaException, ExecutionException {
 		// this object is able to own only one sub-element
 		ListWidget list = new ListWidget(this.getOrdered());
 		ActiveStyleHandler asHandler = new ActiveStyleHandler(this);
@@ -140,13 +140,13 @@
 	
 	// sets the css property list-style-type
 	public void setListStyleType(ListWidget widget, ListStyleTypeValue value) throws InvalidGdlSchemaException, ExecutionException {
-		widget.getListElement().setAttribute("style", widget.getListElement().getAttribute("style") + " list-style-type: " + value.getCssValue() + ";");
+		if(value != null) super.replaceStyleProperty(widget.getListElement(), "list-style-type", value.getCssValue());
 	}
 	
 	
 	// sets the css property list-style-position
 	public void setListStylePositionValue(ListWidget widget, ListStylePositionValue value) throws InvalidGdlSchemaException, ExecutionException {
-		widget.getListElement().setAttribute("style", widget.getListElement().getAttribute("style") + " list-style-position: " + value.getCssValue() + ";");
+		if(value != null) super.replaceStyleProperty(widget.getListElement(), "list-style-position", value.getCssValue());
 	}
 	
 	
@@ -185,7 +185,7 @@
 	
 	// Wraps a ul an ol element as a widget based on a SimplePanel
 	protected class ListWidget extends Composite implements HasMouseDownHandlers, HasMouseUpHandlers, HasFocusHandlers, HasBlurHandlers, HasMouseOutHandlers, HasMouseOverHandlers{
-		private SimplePanel basePanel = new SimplePanel();
+		private AbsolutePanel basePanel = new AbsolutePanel();
 		private Element listElement = null;
 		// note: index is not the actual index of the item in the array list,
 		// it is the user's passed index when inserting this element
@@ -203,11 +203,6 @@
 			if(ordered) this.listElement = DOM.createElement("ol");
 			else this.listElement = DOM.createElement("ul");
 			this.basePanel.getElement().insertFirst(this.listElement);
-			
-			// TODO: remove
-			Element li = DOM.createElement("li");
-			li.setInnerHTML("Hallo !!!");
-			this.listElement.insertFirst(li);
 		}
 		
 		

Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/text/GdlTextObject.java
==============================================================================
--- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/text/GdlTextObject.java	Fri Jul  8 04:01:43 2011	(r583)
+++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/text/GdlTextObject.java	Fri Jul  8 06:22:52 2011	(r584)
@@ -61,9 +61,9 @@
 	public TextAlignValue getTextAlign(String styleClass) throws InvalidGdlSchemaException {
 		Occurrence textAlignOcc = null;
 		if(styleClass != null){
-			textAlignOcc = super.getNoneOrOneScopedOccurrence(GdlPsis.OccurrenceType.gdlDirection, styleClass);
+			textAlignOcc = super.getNoneOrOneScopedOccurrence(GdlPsis.OccurrenceType.gdlTextAlign, styleClass);
 		} else {
-			textAlignOcc = super.getNoneOrOneUnscopedOccurrence(GdlPsis.OccurrenceType.gdlDirection);
+			textAlignOcc = super.getNoneOrOneUnscopedOccurrence(GdlPsis.OccurrenceType.gdlTextAlign);
 		}
 		
 		if(textAlignOcc == null && styleClass != null){
@@ -86,9 +86,9 @@
 	public NormalNumUnitValue getLineHeight(String styleClass) throws InvalidGdlSchemaException {
 		Occurrence lineHeightOcc = null;
 		if(styleClass != null){
-			lineHeightOcc = super.getNoneOrOneScopedOccurrence(GdlPsis.OccurrenceType.gdlDirection, styleClass);
+			lineHeightOcc = super.getNoneOrOneScopedOccurrence(GdlPsis.OccurrenceType.gdlLineHeight, styleClass);
 		} else {
-			lineHeightOcc = super.getNoneOrOneUnscopedOccurrence(GdlPsis.OccurrenceType.gdlDirection);
+			lineHeightOcc = super.getNoneOrOneUnscopedOccurrence(GdlPsis.OccurrenceType.gdlLineHeight);
 		}
 		
 		if(lineHeightOcc == null && styleClass != null){

Added: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/text/GdlTitle.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/text/GdlTitle.java	Fri Jul  8 06:22:52 2011	(r584)
@@ -0,0 +1,399 @@
+package us.isidor.gdl.anaToMia.Widgets.text;
+
+import java.util.ArrayList;
+
+import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Occurrence;
+import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Topic;
+import us.isidor.gdl.anaToMia.Widgets.base.GdlPsis;
+import us.isidor.gdl.anaToMia.Widgets.environment.ActiveStyleHandler;
+import us.isidor.gdl.anaToMia.Widgets.environment.ExecutionException;
+import us.isidor.gdl.anaToMia.Widgets.environment.FocusStyleHandler;
+import us.isidor.gdl.anaToMia.Widgets.environment.HoverStyleHandler;
+import us.isidor.gdl.anaToMia.Widgets.environment.InvalidGdlSchemaException;
+import us.isidor.gdl.anaToMia.Widgets.environment.Pair;
+import us.isidor.gdl.anaToMia.Widgets.values.ColorValue;
+import us.isidor.gdl.anaToMia.Widgets.values.CssValue;
+import us.isidor.gdl.anaToMia.Widgets.values.DirectionValue;
+import us.isidor.gdl.anaToMia.Widgets.values.FontWeightValue;
+import us.isidor.gdl.anaToMia.Widgets.values.NormalNumUnitValue;
+import us.isidor.gdl.anaToMia.Widgets.values.PositiveNumUnitValue;
+import us.isidor.gdl.anaToMia.Widgets.values.TextAlignValue;
+import us.isidor.gdl.anaToMia.Widgets.values.TextDecorationValue;
+import com.google.gwt.dom.client.Element;
+import com.google.gwt.dom.client.Style.FontStyle;
+import com.google.gwt.event.dom.client.BlurEvent;
+import com.google.gwt.event.dom.client.BlurHandler;
+import com.google.gwt.event.dom.client.FocusEvent;
+import com.google.gwt.event.dom.client.FocusHandler;
+import com.google.gwt.event.dom.client.HasBlurHandlers;
+import com.google.gwt.event.dom.client.HasFocusHandlers;
+import com.google.gwt.event.dom.client.HasMouseDownHandlers;
+import com.google.gwt.event.dom.client.HasMouseOutHandlers;
+import com.google.gwt.event.dom.client.HasMouseOverHandlers;
+import com.google.gwt.event.dom.client.HasMouseUpHandlers;
+import com.google.gwt.event.dom.client.MouseDownEvent;
+import com.google.gwt.event.dom.client.MouseDownHandler;
+import com.google.gwt.event.dom.client.MouseOutEvent;
+import com.google.gwt.event.dom.client.MouseOutHandler;
+import com.google.gwt.event.dom.client.MouseOverEvent;
+import com.google.gwt.event.dom.client.MouseOverHandler;
+import com.google.gwt.event.dom.client.MouseUpEvent;
+import com.google.gwt.event.dom.client.MouseUpHandler;
+import com.google.gwt.event.shared.HandlerRegistration;
+import com.google.gwt.user.client.DOM;
+import com.google.gwt.user.client.ui.AbsolutePanel;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.Widget;
+
+
+public class GdlTitle extends GdlTextObject {
+	protected ArrayList<Pair<String, String>> titleActiveCssNamesAndStyles = new ArrayList<Pair<String,String>>();
+	protected ArrayList<Pair<String, String>> titleFocusCssNamesAndStyles = new ArrayList<Pair<String,String>>();
+	protected ArrayList<Pair<String, String>> titleHoverCssNamesAndStyles = new ArrayList<Pair<String,String>>();
+	
+	protected GdlTitle() throws InvalidGdlSchemaException, ExecutionException {
+		super();
+	}
+	
+	
+	public GdlTitle(Topic tmRepresentative) throws InvalidGdlSchemaException, ExecutionException{
+		super(tmRepresentative);
+		// TODO: create a Title element for each TM-elem
+		this.createTitle();
+	}
+	
+	
+	// returns a PositiveNumUnitValue instance that represents the text font-size of this element.
+	// If a styleClass is set, only the corresponding value of the scoped occurrence is returned
+	// or null. The default values of gdl:Title differ to gdl:Text-Object
+	@Override
+	public PositiveNumUnitValue getFontSize(String styleClass) throws InvalidGdlSchemaException {
+		Occurrence sizeOcc = null;
+		if(styleClass != null){
+			sizeOcc = super.getNoneOrOneScopedOccurrence(GdlPsis.OccurrenceType.gdlFontSize, styleClass);
+		} else {
+			sizeOcc = super.getNoneOrOneUnscopedOccurrence(GdlPsis.OccurrenceType.gdlFontSize);
+		}
+
+		if(sizeOcc == null && styleClass != null){
+			return null;
+		} else if(sizeOcc == null) {
+			switch(this.getTitleOrder()){
+			case 1: return new PositiveNumUnitValue("24pt");
+			case 2: return new PositiveNumUnitValue("19pt");
+			case 3: return new PositiveNumUnitValue("16pt");
+			default: return new PositiveNumUnitValue("14pt");
+			}
+		} else {
+			return new PositiveNumUnitValue(sizeOcc.getValue());
+		}
+	}
+	
+	
+	// returns the property of a gdl:title-order occurrence, otherwise the default value if no occurrence is set
+	public int getTitleOrder() throws InvalidGdlSchemaException{
+		Occurrence orderOcc = getNoneOrOneUnscopedOccurrence(GdlPsis.OccurrenceType.gdlTitleOrder);
+
+		if(orderOcc != null){
+			try{
+				int titleOrder = Integer.valueOf(orderOcc.getValue());
+				return titleOrder;
+			}catch(NumberFormatException e){
+				throw new InvalidGdlSchemaException("The occurrence " + GdlPsis.OccurrenceType.gdlTitleOrder + " must be set to one of \"1\", \"2\", \"3\" or \"4\", but is \"" + orderOcc.getValue() + "\"");
+			}
+		} else {
+			return 1;
+		}
+	}
+		
+	
+	@Deprecated
+	public void setTitleOrder(Widget widget, int value){
+		// this method is not implemented, since the title-order is set in initTitle
+		// It exists only for consistency reasons
+	}
+	
+	
+
+
+	
+	// adds a stly property and value as a pair to the corresponding array list
+	private void addStyleToStore(String styleClass, String property, String value){
+		if(styleClass == null) return;
+		else if(styleClass.equals(GdlPsis.Scope.gdlActive)) this.titleActiveCssNamesAndStyles.add(new Pair<String, String>(property, value));
+		else if(styleClass.equals(GdlPsis.Scope.gdlFocus)) this.titleFocusCssNamesAndStyles.add(new Pair<String, String>(property, value));
+		else if(styleClass.equals(GdlPsis.Scope.gdlHover)) this.titleHoverCssNamesAndStyles.add(new Pair<String, String>(property, value));
+	}
+	
+
+	
+	// sets the direction style property of this element by using the GWT DOM class
+	@Override
+	public void setDirection(Widget widget, DirectionValue value, String styleClass) throws InvalidGdlSchemaException, ExecutionException {
+		if(value != null && widget.getClass().equals(TitleWidget.class)) {
+			if(styleClass == null){
+				super.replaceStyleProperty(((TitleWidget)widget).getTitleElement(), "direction", value.getCssValue());
+			}
+			this.addStyleToStore(styleClass, "direction", value.getCssValue());
+		}
+	}
+	
+	
+	// sets the text-align style property of this element by using the GWT DOM class
+	@Override
+	public void setTextAlign(Widget widget, TextAlignValue value, String styleClass) throws InvalidGdlSchemaException, ExecutionException {
+		if(value != null && widget.getClass().equals(TitleWidget.class)) {
+			if(styleClass == null){
+				super.replaceStyleProperty(((TitleWidget)widget).getTitleElement(), "text-align", value.getCssValue());
+			}
+			this.addStyleToStore(styleClass, "text-align", value.getCssValue());
+		}
+	}
+	
+	
+	// sets the line-height style property of this element by using the GWT DOM class
+	@Override
+	public void setLineHeight(Widget widget, NormalNumUnitValue value, String styleClass) throws InvalidGdlSchemaException,	ExecutionException {
+		if(value != null && widget.getClass().equals(TitleWidget.class)) {
+			if(styleClass == null){
+				super.replaceStyleProperty(((TitleWidget)widget).getTitleElement(), "line-height", value.getCssValue());
+			}
+			this.addStyleToStore(styleClass, "line-height", value.getCssValue());
+		}
+	}
+	
+	
+	// sets the text-decoration style property of this element by using the GWT DOM class
+	@Override
+	public void setTextDecoration(Widget widget, TextDecorationValue value,	String styleClass) throws InvalidGdlSchemaException, ExecutionException {
+		if(value != null && widget.getClass().equals(TitleWidget.class)) {
+			if(styleClass == null){
+				super.replaceStyleProperty(((TitleWidget)widget).getTitleElement(), "text-decoration", value.getCssValue());
+			}
+			this.addStyleToStore(styleClass, "text-decoration", value.getCssValue());
+		}
+	}
+	
+	
+	// sets the color style property of this element by using the GWT DOM class
+	@Override
+	public void setColor(Widget widget, ColorValue value, String styleClass) throws InvalidGdlSchemaException, ExecutionException {
+		if(value != null && widget.getClass().equals(TitleWidget.class)) {
+			if(styleClass == null){
+				super.replaceStyleProperty(((TitleWidget)widget).getTitleElement(), "color", value.getCssValue());
+			}
+			this.addStyleToStore(styleClass, "color", value.getCssValue());
+		}
+	}
+	
+	
+	// sets the font-family style property of this element by using the GWT DOM class
+	@Override
+	public void setFontFamily(Widget widget, String value, String styleClass) throws InvalidGdlSchemaException, ExecutionException {
+		if(value != null && widget.getClass().equals(TitleWidget.class)) {
+			if(styleClass == null){
+				super.replaceStyleProperty(((TitleWidget)widget).getTitleElement(), "font-family", value);
+			}
+			this.addStyleToStore(styleClass, "font-family", value);
+		}
+	}
+	
+	
+	// sets the font-style style property of this element by using the GWT DOM class
+	@Override
+	public void setFontStyle(Widget widget, FontStyle value, String styleClass)	throws InvalidGdlSchemaException, ExecutionException {
+		if(value != null && widget.getClass().equals(TitleWidget.class)) {
+			if(styleClass == null){
+				super.replaceStyleProperty(((TitleWidget)widget).getTitleElement(), "font-style", value.getCssName());
+			}
+			this.addStyleToStore(styleClass, "font-style", value.getCssName());
+		}
+	}
+	
+	
+	// sets the font-size style property of this element by using the GWT DOM class
+	@Override
+	public void setFontSize(Widget widget, PositiveNumUnitValue value, String styleClass) throws InvalidGdlSchemaException,	ExecutionException {
+		if(value != null && widget.getClass().equals(TitleWidget.class)) {
+			if(styleClass == null){
+				super.replaceStyleProperty(((TitleWidget)widget).getTitleElement(), "font-size", value.getCssValue());
+			}
+			this.addStyleToStore(styleClass, "font-size", value.getCssValue());
+		}
+	}
+	
+	
+	// sets the font-weight style property of this element by using the GWT DOM class
+	@Override
+	public void setFontWeight(Widget widget, FontWeightValue value,	String styleClass) throws InvalidGdlSchemaException, ExecutionException {
+		if(value != null && widget.getClass().equals(TitleWidget.class)) {
+			if(styleClass == null){
+				super.replaceStyleProperty(((TitleWidget)widget).getTitleElement(), "font-weight", value.getCssValue());
+			}
+			this.addStyleToStore(styleClass, "font-weight", value.getCssValue());
+		}
+	}
+	
+	
+	// sets the letter-spacing style property of this element by using the GWT DOM class
+	@Override
+	public void setLetterSpacing(Widget widget, NormalNumUnitValue value, String styleClass) throws InvalidGdlSchemaException, ExecutionException {
+		if(value != null && widget.getClass().equals(TitleWidget.class)) {
+			if(styleClass == null){
+				super.replaceStyleProperty(((TitleWidget)widget).getTitleElement(), "letter-spacing", value.getCssValue());
+			}
+			this.addStyleToStore(styleClass, "letter-spacing", value.getCssValue());
+		}
+	}
+	
+	// sets the word-spacing style property of this element by using the GWT DOM class
+	@Override
+	public void setWordSpacing(Widget widget, NormalNumUnitValue value, String styleClass) throws InvalidGdlSchemaException, ExecutionException {
+		if(value != null && widget.getClass().equals(TitleWidget.class)) {
+			if(styleClass == null){
+				super.replaceStyleProperty(((TitleWidget)widget).getTitleElement(), "word-spacing", value.getCssValue());
+			}
+			this.addStyleToStore(styleClass, "word-spacing", value.getCssValue());
+		}
+	}
+	
+	
+	
+	// TODO: override 2x onActiveStart => handle style classes
+	
+	// TODO: override 2x onHoverStart => handle style classes
+	
+	// TODO: override 2x onFocusStart => handle style classes
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+
+	// sets the list Element to either ol or ul depending on the gdl:ordered property
+	public void createTitle() throws InvalidGdlSchemaException, ExecutionException {
+		// this object is able to own only one sub-element
+		TitleWidget title = new TitleWidget(this.getTitleOrder());
+		title.setText("TITLE!!!");
+		ActiveStyleHandler asHandler = new ActiveStyleHandler(this);
+		FocusStyleHandler fsHandler = new FocusStyleHandler(this);
+		HoverStyleHandler hsHandler = new HoverStyleHandler(this);
+		int idSuffix = 0;
+		if(this.subElements != null) idSuffix = this.subElements.size(); 
+		title.setId(this.getId() + "__GDL_" + idSuffix);
+		title.addMouseDownHandler(asHandler);
+		title.addMouseUpHandler(asHandler);
+		title.addMouseOverHandler(hsHandler);
+		title.addMouseOutHandler(hsHandler);
+		title.addFocusHandler(fsHandler);
+		title.addBlurHandler(fsHandler);
+		super.addToContainerPanel(title);	
+		this.setGdlStyle(title);
+	}
+	
+	
+	// this class represents the acutal content of this widget, i.e.
+	// it wraps a h1, h2, h3 or h4 element
+	protected class TitleWidget extends Composite implements HasMouseDownHandlers, HasMouseUpHandlers, HasMouseOverHandlers, HasMouseOutHandlers, HasBlurHandlers, HasFocusHandlers{
+		private AbsolutePanel basePanel = new AbsolutePanel();
+		private Element titleElement = null;
+		
+		
+		// some constructurs
+		public TitleWidget()throws ExecutionException{
+			initWidget(this.basePanel);
+			this.initTitleElement(1);
+		}
+		
+		
+		
+		public Element getTitleElement(){
+			return this.titleElement;
+		}
+		
+		
+		public TitleWidget(int titleOrder) throws ExecutionException{
+			if(titleOrder <= 0 || titleOrder > 4) throw new ExecutionException("The title order of a GDL Title element must be 1, 2, 3 or 4");
+			initWidget(this.basePanel);
+			this.initTitleElement(titleOrder);
+		}
+		
+		
+		// creates and returns the actual title element
+		private void initTitleElement(int titleOrder) throws ExecutionException {
+			switch(titleOrder){
+			case 1: this.titleElement = DOM.createElement("h1");
+				break;
+			case 2: this.titleElement = DOM.createElement("h2");
+				break;
+			case 3: this.titleElement = DOM.createElement("h3");
+				break;
+			case 4: this.titleElement = DOM.createElement("h4");
+				break;
+			default: throw new ExecutionException("The title order of a GDL Title element must be 1, 2, 3 or 4");
+			}
+			this.basePanel.getElement().insertFirst(this.titleElement);
+		}
+		
+		
+		// inserts the passed string as content to the heading
+		public void setText(String text){
+			if(text == null) return;
+			this.titleElement.setInnerText(text);
+		}
+
+
+		public void setId(String id){
+			DOM.setElementAttribute(this.basePanel.getElement(), "id", id);
+		}
+
+
+		@Override
+		public HandlerRegistration addMouseOverHandler(MouseOverHandler handler) {
+			return this.basePanel.addDomHandler(handler, MouseOverEvent.getType());
+		}
+
+
+		@Override
+		public HandlerRegistration addMouseOutHandler(MouseOutHandler handler) {
+			return this.basePanel.addDomHandler(handler, MouseOutEvent.getType());
+		}
+
+
+		@Override
+		public HandlerRegistration addBlurHandler(BlurHandler handler) {
+			return this.basePanel.addDomHandler(handler, BlurEvent.getType());
+		}
+
+
+		@Override
+		public HandlerRegistration addFocusHandler(FocusHandler handler) {
+			return this.basePanel.addDomHandler(handler, FocusEvent.getType());
+		}
+
+
+		@Override
+		public HandlerRegistration addMouseUpHandler(MouseUpHandler handler) {
+			return this.basePanel.addDomHandler(handler, MouseUpEvent.getType());
+		}
+
+
+		@Override
+		public HandlerRegistration addMouseDownHandler(MouseDownHandler handler) {
+			return this.basePanel.addDomHandler(handler, MouseDownEvent.getType());
+		}
+	}
+}




More information about the Isidorus-cvs mailing list