Author: lgiessmann
Date: Fri Sep 2 00:58:42 2011
New Revision: 817
Log:
gdl-frontend: Widgets: added a new base-structure for the validation of user data
Modified:
branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/GdlSpace.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/button/GdlActionButton.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/text/GdlInfo.java
branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/text/GdlReference.java
branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/text/GdlTitle.java
branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/view/GdlAssociationView.java
branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/view/GdlDefaultTopicView.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/GdlSpace.java
==============================================================================
--- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/GdlSpace.java Thu Sep 1 09:18:20 2011 (r816)
+++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/GdlSpace.java Fri Sep 2 00:58:42 2011 (r817)
@@ -1,7 +1,6 @@
package us.isidor.gdl.anaToMia.Widgets.base;
import java.util.ArrayList;
-
import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Construct;
import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Topic;
import us.isidor.gdl.anaToMia.Widgets.environment.ExecutionException;
@@ -39,4 +38,11 @@
public void fixValue(){
// has no effect on this element
}
+
+
+ @Override
+ public void validate() throws ExecutionException {
+ // this element has no editable content and is always valid
+ return;
+ }
}
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 Thu Sep 1 09:18:20 2011 (r816)
+++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/GdlVisibleObject.java Fri Sep 2 00:58:42 2011 (r817)
@@ -2297,4 +2297,10 @@
return result;
}
+
+
+ // validates the entered user data, if it is invalid a ExecutionException is thrown
+ public void validate() throws ExecutionException{
+ // TODO: implement
+ }
}
Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/button/GdlActionButton.java
==============================================================================
--- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/button/GdlActionButton.java Thu Sep 1 09:18:20 2011 (r816)
+++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/button/GdlActionButton.java Fri Sep 2 00:58:42 2011 (r817)
@@ -270,4 +270,11 @@
public void fixValue(){
// has no effect on this element
}
+
+
+ @Override
+ public void validate() throws ExecutionException {
+ // this element has no editable content and is always valid
+ return;
+ }
}
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 Sep 1 09:18:20 2011 (r816)
+++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/container/GdlList.java Fri Sep 2 00:58:42 2011 (r817)
@@ -210,6 +210,136 @@
((ListWidget)((ButtonableObject)this.subElements.get(0)).getMainObject()).insertWidget(item, position);
}
}
+
+
+ // this class wraps a list item, i.e. a div element within a li element
+ protected class ListItem{
+ private Element liElement = null;
+ private Element divElement = null;
+ private ArrayList<GdlVisibleObject> contents = new ArrayList<GdlVisibleObject>();
+
+
+ public ListItem(){
+ this.liElement = DOM.createElement("li");
+ this.divElement = DOM.createElement("div");
+ this.liElement.insertFirst(this.divElement);
+ }
+
+ public ListItem(Element parentList){
+ this();
+ this.appendToList(parentList);
+ }
+
+ // inserts the this instance into the passed list element,
+ // if this instance is not bound yet
+ public void appendToList(Element parentList){
+ if(parentList != null && this.liElement.getParentNode() == null){
+ Node lastChild = parentList.getLastChild();
+ if(lastChild != null){
+ parentList.insertAfter(this.liElement, lastChild);
+ } else {
+ parentList.insertFirst(this.liElement);
+ }
+ }
+ }
+
+
+ // inserts the this instance into the passed list element
+ // after the passed ListItem, if this instance is not bound yet
+ public void appendToList(Element parentList, ListItem previous){
+ if(parentList == null) return;
+
+ if(previous == null){
+ this.appendToList(parentList);
+ }else{
+ parentList.insertAfter(this.liElement, previous.liElement);
+ }
+ }
+
+
+ // removes this instance from the set list
+ public void removeFromList(){
+ this.liElement.removeFromParent();
+ }
+
+ // appends the content element to the inner div item
+ public void appendContentToListItem(GdlVisibleObject content){
+ if(content != null){
+ Node lastChild = this.divElement.getLastChild();
+ if(lastChild != null){
+ this.divElement.insertAfter(content.getElement(), lastChild);
+ } else {
+ this.divElement.insertFirst(content.getElement());
+ }
+
+ contents.add(content);
+ }
+ }
+
+
+ public void validate() throws ExecutionException {
+ for (GdlVisibleObject content : this.contents) content.validate();
+ }
+ }
+
+
+ @Override
+ public void validate() throws ExecutionException {
+ for (Widget ctrl : this.subElements) {
+ ((ListWidget)((ButtonableObject)ctrl).getMainObject()).validate();
+ }
+ }
+
+
+ @Override
+ public GdlVisibleObject append(Topic ancestor, Topic current) throws InvalidGdlSchemaException, ExecutionException {
+ // TODO Auto-generated method stub
+ if(this.subElements.size() == 0) return null;
+ if(this.storedItems == null) this.storedItems = this.containsItems();
+
+ // the ancestor element can be ignore, since the current idx can be looked up
+ // from the storedItem array list directly
+ int idx = -1;
+ for (Pair<Topic, Integer> pair : this.storedItems) if(pair.getFirst().equals(current)) idx = pair.getSecond();
+
+ ListWidget list = (ListWidget)((ButtonableObject)this.subElements.get(0)).getMainObject();
+ GdlVisibleObject newObj = GdlInstantiator.instantiate(current, this.receivedData, GdlList.this);
+ list.insertWidget(newObj, idx);
+
+ return newObj;
+ }
+
+
+ // returns all topics that are bound to this tm representative topic via a
+ // contains association i an ordered list
+ @Override
+ public ArrayList<Topic> contains() throws InvalidGdlSchemaException {
+ ArrayList<Topic> result = new ArrayList<Topic>();
+ for (Pair<Topic, Integer> pair : TmHelper.listContains(super.getTmRepresentative()))
+ result.add(pair.getFirst());
+
+ return result;
+ }
+
+
+ // returns an ordered list of items with their index
+ public ArrayList<Pair<Topic, Integer>> containsItems() throws InvalidGdlSchemaException{
+ return TmHelper.listContains(super.getTmRepresentative());
+ }
+
+
+ @Override
+ @Deprecated
+ public ArrayList<String> getSelectedValues(){
+ return new ArrayList<String>();
+ }
+
+
+ @Override
+ @Deprecated
+ public void fixValue(){
+ // has no effect on this element
+ }
// Wraps a ul an ol element as a widget based on a SimplePanel
@@ -253,10 +383,10 @@
// inserts the passed widget directly before the first item that
// has a greater position index
- public void insertWidget(Widget widget, int position){
+ public void insertWidget(GdlVisibleObject widget, int position){
ListItem previosItem = this.getItemBeforeIndex(position);
ListItem item = new ListItem(this.listElement);
- item.appendContentToListItem(widget.getElement());
+ item.appendContentToListItem(widget);
this.appendListItem(item, previosItem);
}
@@ -299,6 +429,13 @@
}
+ public void validate() throws ExecutionException {
+ for (Pair<ListItem, Integer> item: this.itemsAndIndexes) {
+ item.getFirst().validate();
+ }
+ }
+
+
public void setId(String id){
DOM.setElementAttribute(this.basePanel.getElement(), "id", id);
}
@@ -339,117 +476,4 @@
return this.addDomHandler(handler, MouseDownEvent.getType());
}
}
-
-
- // this class wraps a list item, i.e. a div element within a li element
- protected class ListItem{
- private Element liElement = null;
- private Element divElement = null;
-
- public ListItem(){
- this.liElement = DOM.createElement("li");
- this.divElement = DOM.createElement("div");
- this.liElement.insertFirst(this.divElement);
- }
-
- public ListItem(Element parentList){
- this();
- this.appendToList(parentList);
- }
-
- // inserts the this instance into the passed list element,
- // if this instance is not bound yet
- public void appendToList(Element parentList){
- if(parentList != null && this.liElement.getParentNode() == null){
- Node lastChild = parentList.getLastChild();
- if(lastChild != null){
- parentList.insertAfter(this.liElement, lastChild);
- } else {
- parentList.insertFirst(this.liElement);
- }
- }
- }
-
-
- // inserts the this instance into the passed list element
- // after the passed ListItem, if this instance is not bound yet
- public void appendToList(Element parentList, ListItem previous){
- if(parentList == null) return;
-
- if(previous == null){
- this.appendToList(parentList);
- }else{
- parentList.insertAfter(this.liElement, previous.liElement);
- }
- }
-
-
- // removes this instance from the set list
- public void removeFromList(){
- this.liElement.removeFromParent();
- }
-
- // appends the content element to the inner div item
- public void appendContentToListItem(Element content){
- if(content != null){
- Node lastChild = this.divElement.getLastChild();
- if(lastChild != null){
- this.divElement.insertAfter(content, lastChild);
- } else {
- this.divElement.insertFirst(content);
- }
- }
- }
- }
-
-
- @Override
- public GdlVisibleObject append(Topic ancestor, Topic current) throws InvalidGdlSchemaException, ExecutionException {
- // TODO Auto-generated method stub
- if(this.subElements.size() == 0) return null;
- if(this.storedItems == null) this.storedItems = this.containsItems();
-
- // the ancestor element can be ignore, since the current idx can be looked up
- // from the storedItem array list directly
- int idx = -1;
- for (Pair<Topic, Integer> pair : this.storedItems) if(pair.getFirst().equals(current)) idx = pair.getSecond();
-
- ListWidget list = (ListWidget)((ButtonableObject)this.subElements.get(0)).getMainObject();
- GdlVisibleObject newObj = GdlInstantiator.instantiate(current, this.receivedData, GdlList.this);
- list.insertWidget(newObj, idx);
-
- return newObj;
- }
-
-
- // returns all topics that are bound to this tm representative topic via a
- // contains association i an ordered list
- @Override
- public ArrayList<Topic> contains() throws InvalidGdlSchemaException {
- ArrayList<Topic> result = new ArrayList<Topic>();
- for (Pair<Topic, Integer> pair : TmHelper.listContains(super.getTmRepresentative()))
- result.add(pair.getFirst());
-
- return result;
- }
-
-
- // returns an ordered list of items with their index
- public ArrayList<Pair<Topic, Integer>> containsItems() throws InvalidGdlSchemaException{
- return TmHelper.listContains(super.getTmRepresentative());
- }
-
-
- @Override
- @Deprecated
- public ArrayList<String> getSelectedValues(){
- return new ArrayList<String>();
- }
-
-
- @Override
- @Deprecated
- public void fixValue(){
- // has no effect on this element
- }
}
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 Sep 1 09:18:20 2011 (r816)
+++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/container/GdlUnit.java Fri Sep 2 00:58:42 2011 (r817)
@@ -244,6 +244,14 @@
}
+ @Override
+ public void validate() throws ExecutionException {
+ for (Widget ctrl : this.subElements) {
+ ((UnitWidget)((ButtonableObject)ctrl).getMainObject()).validate();
+ }
+ }
+
+
protected class UnitWidget extends Composite implements HasFocusHandlers, HasBlurHandlers, HasMouseOutHandlers, HasMouseOverHandlers, HasMouseDownHandlers, HasMouseUpHandlers{
private CaptionPanel basePanel = new CaptionPanel();
private AbsolutePanel containerPanel = new AbsolutePanel();
@@ -370,5 +378,14 @@
e.printStackTrace();
}
}
+
+
+ public void validate() throws ExecutionException{
+ for (Widget ctrl : this.subElements) {
+ if(ctrl instanceof GdlVisibleObject){
+ ((GdlVisibleObject)ctrl).validate();
+ }
+ }
+ }
}
}
\ No newline at end of file
Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/text/GdlInfo.java
==============================================================================
--- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/text/GdlInfo.java Thu Sep 1 09:18:20 2011 (r816)
+++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/text/GdlInfo.java Fri Sep 2 00:58:42 2011 (r817)
@@ -108,4 +108,11 @@
public ArrayList<String> getSelectedValues(){
return new ArrayList<String>();
}
+
+
+ @Override
+ public void validate() throws ExecutionException {
+ // this element has no editable content and is always valid
+ return;
+ }
}
Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/text/GdlReference.java
==============================================================================
--- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/text/GdlReference.java Thu Sep 1 09:18:20 2011 (r816)
+++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/text/GdlReference.java Fri Sep 2 00:58:42 2011 (r817)
@@ -58,6 +58,13 @@
}
+ @Override
+ public void validate() throws ExecutionException {
+ // this element has no editable content and is always valid
+ return;
+ }
+
+
private ReferenceWidget createReference() throws InvalidGdlSchemaException, ExecutionException {
ReferenceWidget reference = new ReferenceWidget();
DOM.setElementAttribute(reference.getElement(), "id", this.getId() + "__GDL_" + this.subElements.size());
Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/text/GdlTitle.java
==============================================================================
--- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/text/GdlTitle.java Thu Sep 1 09:18:20 2011 (r816)
+++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/text/GdlTitle.java Fri Sep 2 00:58:42 2011 (r817)
@@ -449,6 +449,13 @@
}
+ @Override
+ public void validate() throws ExecutionException {
+ // this element has no editable content and is always valid
+ return;
+ }
+
+
// 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{
Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/view/GdlAssociationView.java
==============================================================================
--- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/view/GdlAssociationView.java Thu Sep 1 09:18:20 2011 (r816)
+++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/view/GdlAssociationView.java Fri Sep 2 00:58:42 2011 (r817)
@@ -223,6 +223,13 @@
return result;
}
+
+
+ @Override
+ public void validate() throws ExecutionException {
+ for (Widget ctrl : this.subElements)
+ if(ctrl instanceof AssociationItem) ((AssociationItem)ctrl).validate();
+ }
// This class represents a single association that is displayed.
Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/view/GdlDefaultTopicView.java
==============================================================================
--- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/view/GdlDefaultTopicView.java Thu Sep 1 09:18:20 2011 (r816)
+++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/view/GdlDefaultTopicView.java Fri Sep 2 00:58:42 2011 (r817)
@@ -15,4 +15,5 @@
}
// TODO: implement
+
}
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 Sep 1 09:18:20 2011 (r816)
+++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/view/GdlView.java Fri Sep 2 00:58:42 2011 (r817)
@@ -125,4 +125,14 @@
return this.hiddenValues;
}
}
+
+
+ @Override
+ public void validate() throws ExecutionException {
+ for (Widget ctrl : this.subElements) {
+ if(ctrl instanceof GdlVisibleObject){
+ ((GdlVisibleObject)ctrl).validate();
+ }
+ }
+ }
}
\ No newline at end of file