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

lgiessmann at common-lisp.net lgiessmann at common-lisp.net
Thu Jul 7 15:49:41 UTC 2011


Author: lgiessmann
Date: Thu Jul  7 08:49:40 2011
New Revision: 577

Log:
gdl-frontend: Widgets: implemented GdlListBox (GDL:one-per-group is currently not implemented)

Added:
   branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/text/GdlListBox.java
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/text/GdlText.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/TestClass.java
==============================================================================
--- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/TestClass.java	Thu Jul  7 07:44:51 2011	(r576)
+++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/TestClass.java	Thu Jul  7 08:49:40 2011	(r577)
@@ -4,6 +4,7 @@
 import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Occurrence;
 import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Topic;
 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.values.CursorValue;
 import com.google.gwt.core.client.EntryPoint;
@@ -114,7 +115,7 @@
 			fsHover.addTheme(gdlHover);
 			
 			
-			GdlText tmp = new GdlText(tmpRepresentative){};
+			GdlListBox tmp = new GdlListBox(tmpRepresentative){};
 			this.mainPanel.add(tmp);
 		}catch(Exception e){
 			e.printStackTrace();

Added: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/text/GdlListBox.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/GdlListBox.java	Thu Jul  7 08:49:40 2011	(r577)
@@ -0,0 +1,198 @@
+package us.isidor.gdl.anaToMia.Widgets.text;
+
+import java.util.ArrayList;
+
+import com.google.gwt.event.shared.EventHandler;
+import com.google.gwt.i18n.client.HasDirection.Direction;
+import com.google.gwt.user.client.DOM;
+import com.google.gwt.user.client.ui.ListBox;
+import com.google.gwt.user.client.ui.Widget;
+
+import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Occurrence;
+import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Topic;
+import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.TopicMapsTypes;
+import us.isidor.gdl.anaToMia.Widgets.base.GdlPsis;
+import us.isidor.gdl.anaToMia.Widgets.base.IGdlHasValue;
+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;
+
+public class GdlListBox extends GdlTextObject implements IGdlHasValue{
+	// some constructors
+	protected GdlListBox() throws InvalidGdlSchemaException, ExecutionException {
+		super();
+	}
+	
+	
+	public GdlListBox(Topic tmRepresentative) throws InvalidGdlSchemaException, ExecutionException{
+		super(tmRepresentative);
+		// TODO: create a ListBox element for each TM-elem
+		ListBox lb = this.createNewListBox(); // TODO: remove only for debugging
+		lb.addItem("value-1", Direction.LTR);
+		lb.addItem("value-2", Direction.LTR);
+		lb.addItem("value-3", Direction.LTR);
+		lb.addItem("value-4", Direction.LTR);
+		lb.addItem("value-5", Direction.LTR);
+		lb.addItem("value-6", Direction.LTR);
+		lb.addItem("value-1", Direction.LTR);
+		lb.addItem("value-2", Direction.LTR);
+		lb.addItem("value-3", Direction.LTR);
+		lb.addItem("value-4", Direction.LTR);
+		lb.addItem("value-5", Direction.LTR);
+		lb.addItem("value-6", Direction.LTR);
+		lb = this.createNewListBox(); // TODO: remove only for debugging
+		lb.addItem("value-1", Direction.LTR);
+		lb.addItem("value-2", Direction.LTR);
+		lb.addItem("value-3", Direction.LTR);
+	}
+	
+	
+	// creates a new ListBox item, adds it to the subElements array,
+	// and applies the styles on it
+	protected ListBox createNewListBox() throws InvalidGdlSchemaException, ExecutionException {
+		ListBox elem = new ListBox(this.getMultiple());
+		DOM.setElementAttribute(elem.getElement(), "id", this.getId() + "__GDL_" + this.subElements.size());
+		this.setGdlStyle(elem);
+		ActiveStyleHandler asHandler = new ActiveStyleHandler(this);
+		FocusStyleHandler fsHandler = new FocusStyleHandler(this);
+		HoverStyleHandler hsHandler = new HoverStyleHandler(this);
+		elem.addMouseDownHandler(asHandler);
+		elem.addMouseUpHandler(asHandler);
+		elem.addMouseOverHandler(hsHandler);
+		elem.addMouseOutHandler(hsHandler);
+		elem.addFocusHandler(fsHandler);
+		elem.addBlurHandler(fsHandler);
+		this.subElements.add(elem);
+		super.addToContainerPanel(elem);
+		return elem;
+	}
+	
+	
+	// removes the passed element and all its handlers from the outer element
+	protected void removeListbox(ListBox elem) throws InvalidGdlSchemaException, ExecutionException{
+		for (Pair<Widget, ArrayList<EventHandler>> item : this.eventHandlers) {
+			if(item.getFirst().equals(elem)){
+				this.eventHandlers.remove(item);
+				break;
+			}
+		}
+		this.subElements.remove(elem);
+		elem.removeFromParent();
+	}
+	
+	
+	// returns the gdl:multiple property - if no value is set the default value is returned
+	public boolean getMultiple() throws InvalidGdlSchemaException {
+		Occurrence multipleOcc = getNoneOrOneUnscopedOccurrence(GdlPsis.OccurrenceType.gdlMultiple);
+
+		if(multipleOcc != null){
+			String boolStr = multipleOcc.getValue().toUpperCase();
+			if(boolStr.equals("TRUE")){
+				return true;
+			} else if(boolStr.equals("FALSE")) {
+				return false;
+			} else {
+				throw new InvalidGdlSchemaException("The occurrence " + GdlPsis.OccurrenceType.gdlMargin + " must be set to one of \"true\" or \"false\", but is \"" + multipleOcc.getValue() + "\"");
+			}
+		} else {
+			return false;
+		}
+	}
+	
+	
+	// returns the gdl:one-per-group property - if no value is set the default value is returned
+	public boolean getOnePerGroup() throws InvalidGdlSchemaException {
+		Occurrence onePerGroupOcc = getNoneOrOneUnscopedOccurrence(GdlPsis.OccurrenceType.gdlOnePerGroup);
+
+		if(onePerGroupOcc != null){
+			String boolStr = onePerGroupOcc.getValue().toUpperCase();
+			if(boolStr.equals("TRUE")){
+				return true;
+			} else if(boolStr.equals("FALSE")) {
+				return false;
+			} else {
+				throw new InvalidGdlSchemaException("The occurrence " + GdlPsis.OccurrenceType.gdlOnePerGroup + " must be set to one of \"true\" or \"false\", but is \"" + onePerGroupOcc.getValue() + "\"");
+			}
+		} else {
+			return false;
+		}
+	}
+	
+	
+	// returns an int instance of a gdl:size occurrence.
+	// If no gdl:size occurrence is set, the default value is returned
+	public int getSize() throws InvalidGdlSchemaException {
+		Occurrence rowsOcc = getNoneOrOneUnscopedOccurrence(GdlPsis.OccurrenceType.gdlSize);
+
+		if(rowsOcc != null){
+			try{
+				int value = Integer.valueOf(rowsOcc.getValue());
+				if(value < 0) throw new InvalidGdlSchemaException("The occurrence " + GdlPsis.OccurrenceType.gdlSize + " must be set to a positive integer, but is \"" + rowsOcc.getValue() + "\""); 
+				else return value;
+			}catch(NumberFormatException e){
+				throw new InvalidGdlSchemaException("The occurrence " + GdlPsis.OccurrenceType.gdlSize + " must be set to a positive integer, but is \"" + rowsOcc.getValue() + "\"");
+			}
+		} else {
+			return 1;
+		}
+	}
+	
+	
+	// sets the size property of this element by using the GWT DOM class
+	public void setSize(Widget widget, int value){
+		((ListBox)widget).setVisibleItemCount(value);
+	}
+	
+	
+	// this method has not effect, it is defined only for consistency reasons
+	@Deprecated
+	public void setMultiple(Widget widget, boolean value){
+		// Do nothing the gdl:multiple property is set in the createListBox method
+		// directly when calling the ListBox constructor
+	}
+	
+	
+	public void setOnePerGroup(Widget widget, boolean value){
+		// TODO: implement => http://code.google.com/p/gwt-traction/source/browse/src/com/tractionsoftware/gwt/user/client/ui/GroupedListBox.java?r=054b2ce16dd9dfbd0836f09bb8678d7abb0c4fed
+	}
+	
+	
+	// sets the css properties, by calling the super class's method and the local
+	// method, which sets some specific properties for the GdlText instance
+	@Override
+	public void setGdlStyle(Widget widget) throws InvalidGdlSchemaException, ExecutionException {
+		super.setGdlStyle(widget);
+
+		this.setSize(widget, this.getSize());
+		this.setOnePerGroup(widget, this.getOnePerGroup());
+	}
+	
+
+	// returns an ArrayList of string that contains all selected values
+	@Override
+	public ArrayList<String> getStringValue() {
+		ArrayList<String> results = new ArrayList<String>();
+		for (Widget elem : super.subElements) {
+			ListBox lb = ((ListBox)elem);
+			if(lb.getSelectedIndex() != -1)	results.add(lb.getValue(lb.getSelectedIndex()));
+		}
+		return results;
+	}
+	
+
+	@Override
+	public ArrayList<Pair<TopicMapsTypes, Object>> getTmValue() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	
+	@Override
+	public boolean validate() {
+		// TODO Auto-generated method stub
+		return false;
+	}
+}
\ No newline at end of file

Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/text/GdlText.java
==============================================================================
--- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/text/GdlText.java	Thu Jul  7 07:44:51 2011	(r576)
+++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/text/GdlText.java	Thu Jul  7 08:49:40 2011	(r577)
@@ -52,12 +52,12 @@
 	}
 	
 	
-	// creates a new TextArea item, adds it to the textElements array,
+	// creates a new TextArea item, adds it to the subElements array,
 	// and applies the styles on it
 	protected TextArea createNewTextArea() throws InvalidGdlSchemaException, ExecutionException {
 		TextArea elem = new TextArea();
 		DOM.setElementAttribute(elem.getElement(), "id", this.getId() + "__GDL_" + this.subElements.size());
-		this.setGdlStyle((Widget)elem);
+		this.setGdlStyle(elem);
 		ActiveStyleHandler asHandler = new ActiveStyleHandler(this);
 		FocusStyleHandler fsHandler = new FocusStyleHandler(this);
 		HoverStyleHandler hsHandler = new HoverStyleHandler(this);
@@ -448,7 +448,7 @@
 	}
 	
 	
-	// returns a boolean instance of a gdl:rows occurrence.
+	// returns an int instance of a gdl:rows occurrence.
 	// If no gdl:rows occurrence is set, the default value is returned
 	public int getRows() throws InvalidGdlSchemaException {
 		Occurrence rowsOcc = getNoneOrOneUnscopedOccurrence(GdlPsis.OccurrenceType.gdlRows);

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	Thu Jul  7 07:44:51 2011	(r576)
+++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/text/GdlTextObject.java	Thu Jul  7 08:49:40 2011	(r577)
@@ -1,10 +1,7 @@
 package us.isidor.gdl.anaToMia.Widgets.text;
 
-
 import com.google.gwt.dom.client.Style.FontStyle;
-import com.google.gwt.user.client.ui.TextArea;
 import com.google.gwt.user.client.ui.Widget;
-
 import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Occurrence;
 import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Topic;
 import us.isidor.gdl.anaToMia.Widgets.base.GdlPsis;
@@ -283,66 +280,66 @@
 
 	// sets the direction style property of this element by using the GWT DOM class
 	public void setDirection(Widget widget, DirectionValue value, String styleClass) throws InvalidGdlSchemaException, ExecutionException {
-		if(value != null) this.setCssProperty((TextArea)widget, styleClass, "direction", value.getCssValue());
+		if(value != null) this.setCssProperty(widget, styleClass, "direction", value.getCssValue());
 	}
 	
 	
 	// sets the text-align style property of this element by using the GWT DOM class
 	public void setTextAlign(Widget widget, TextAlignValue value, String styleClass) throws InvalidGdlSchemaException, ExecutionException {
-		if(value != null) this.setCssProperty((TextArea)widget, styleClass, "textAlign", value.getCssValue());
+		if(value != null) this.setCssProperty(widget, styleClass, "textAlign", value.getCssValue());
 	}
 	
 	
 	// sets the line-height style property of this element by using the GWT DOM class
 	public void setLineHeight(Widget widget, NormalNumUnitValue value, String styleClass) throws InvalidGdlSchemaException,	ExecutionException {
-		if(value != null) this.setCssProperty((TextArea)widget, styleClass, "lineHeight", value.getCssValue());
+		if(value != null) this.setCssProperty(widget, styleClass, "lineHeight", value.getCssValue());
 	}
 	
 	
 	// sets the text-decoration style property of this element by using the GWT DOM class
 	public void setTextDecoration(Widget widget, TextDecorationValue value,	String styleClass) throws InvalidGdlSchemaException, ExecutionException {
-		if(value != null) this.setCssProperty((TextArea)widget, styleClass, "textDecoration", value.getCssValue());
+		if(value != null) this.setCssProperty(widget, styleClass, "textDecoration", value.getCssValue());
 	}
 	
 	
 	// sets the color style property of this element by using the GWT DOM class
 	public void setColor(Widget widget, ColorValue value, String styleClass) throws InvalidGdlSchemaException, ExecutionException {
-		if(value != null) this.setCssProperty((TextArea)widget, styleClass, "color", value.getCssValue());
+		if(value != null) this.setCssProperty(widget, styleClass, "color", value.getCssValue());
 	}
 	
 	
 	// sets the font-family style property of this element by using the GWT DOM class
 	public void setFontFamily(Widget widget, String value, String styleClass) throws InvalidGdlSchemaException, ExecutionException {
-		if(value != null) this.setCssProperty((TextArea)widget, styleClass, "fontFamily", value);
+		if(value != null) this.setCssProperty(widget, styleClass, "fontFamily", value);
 	}
 	
 	
 	// sets the font-style style property of this element by using the GWT DOM class
 	public void setFontStyle(Widget widget, FontStyle value, String styleClass)	throws InvalidGdlSchemaException, ExecutionException {
-		if(value != null) this.setCssProperty((TextArea)widget, styleClass, "fontStyle", value.getCssName());
+		if(value != null) this.setCssProperty(widget, styleClass, "fontStyle", value.getCssName());
 	}
 	
 	
 	// sets the font-size style property of this element by using the GWT DOM class
 	public void setFontSize(Widget widget, PositiveNumUnitValue value, String styleClass) throws InvalidGdlSchemaException,	ExecutionException {
-		if(value != null) this.setCssProperty((TextArea)widget, styleClass, "fontSize", value.getCssValue());
+		if(value != null) this.setCssProperty(widget, styleClass, "fontSize", value.getCssValue());
 	}
 	
 	
 	// sets the font-weight style property of this element by using the GWT DOM class
 	public void setFontWeight(Widget widget, FontWeightValue value,	String styleClass) throws InvalidGdlSchemaException, ExecutionException {
-		if(value != null) this.setCssProperty((TextArea)widget, styleClass, "fontWeight", value.getCssValue());
+		if(value != null) this.setCssProperty(widget, styleClass, "fontWeight", value.getCssValue());
 	}
 	
 	
 	// sets the letter-spacing style property of this element by using the GWT DOM class
 	public void setLetterSpacing(Widget widget, NormalNumUnitValue value, String styleClass) throws InvalidGdlSchemaException, ExecutionException {
-		if(value != null) this.setCssProperty((TextArea)widget, styleClass, "letterSpacing", value.getCssValue());
+		if(value != null) this.setCssProperty(widget, styleClass, "letterSpacing", value.getCssValue());
 	}
 	
 	// sets the word-spacing style property of this element by using the GWT DOM class
 	public void setWordSpacing(Widget widget, NormalNumUnitValue value, String styleClass) throws InvalidGdlSchemaException, ExecutionException {
-		if(value != null) this.setCssProperty((TextArea)widget, styleClass, "wordSpacing", value.getCssValue());
+		if(value != null) this.setCssProperty(widget, styleClass, "wordSpacing", value.getCssValue());
 	}
 	
 	




More information about the Isidorus-cvs mailing list