Author: lgiessmann Date: Wed Jul 20 10:01:42 2011 New Revision: 652
Log: gdl-frontend: Widgets: changed UnitWidget to a Caption panel
Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/TmHelper.java branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/container/GdlUnit.java branches/gdl-frontend/src/anaToMia/GDL_Widgets/war/gdl_widgets/test.gdl.jtm
Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/TmHelper.java ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/TmHelper.java Wed Jul 20 07:32:13 2011 (r651) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/TmHelper.java Wed Jul 20 10:01:42 2011 (r652) @@ -19,6 +19,7 @@ import us.isidor.gdl.anaToMia.Widgets.environment.Pair; import us.isidor.gdl.anaToMia.Widgets.environment.TopicIdentifierTypes; import com.google.gwt.core.client.JsArray; +import com.google.gwt.user.client.Window;
public class TmHelper {
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 Wed Jul 20 07:32:13 2011 (r651) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/container/GdlUnit.java Wed Jul 20 10:01:42 2011 (r652) @@ -24,6 +24,7 @@ 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.CaptionPanel; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Widget; import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Occurrence; @@ -1173,7 +1174,7 @@ UnitWidget unit = (UnitWidget)source; for (Pair<String, String> pair : this.unitHoverCssNamesAndStyles) { if(pair.getFirst().equals("textDecoration"))unit.setTextDecoration(pair.getSecond()); - else DOM.setStyleAttribute(unit.fieldset, pair.getFirst(), pair.getSecond()); + else DOM.setStyleAttribute(unit.basePanel.getElement(), pair.getFirst(), pair.getSecond()); if(unit.styleOfUnitWidgetBase(pair.getFirst())) DOM.setStyleAttribute(unit.basePanel.getElement(), pair.getFirst(), pair.getSecond()); } @@ -1189,7 +1190,7 @@ UnitWidget unit = (UnitWidget)widget; for (Pair<String, String> pair : this.unitHoverCssNamesAndStyles) { if(pair.getFirst().equals("textDecoration"))unit.setTextDecoration(pair.getSecond()); - else DOM.setStyleAttribute(unit.fieldset, pair.getFirst(), pair.getSecond()); + else DOM.setStyleAttribute(unit.basePanel.getElement(), pair.getFirst(), pair.getSecond()); if(unit.styleOfUnitWidgetBase(pair.getFirst())) DOM.setStyleAttribute(unit.basePanel.getElement(), pair.getFirst(), pair.getSecond()); } @@ -1205,7 +1206,7 @@ UnitWidget unit = (UnitWidget)widget; for (Pair<String, String> pair : this.unitFocusCssNamesAndStyles) { if(pair.getFirst().equals("textDecoration"))unit.setTextDecoration(pair.getSecond()); - else DOM.setStyleAttribute(unit.fieldset, pair.getFirst(), pair.getSecond()); + else DOM.setStyleAttribute(unit.basePanel.getElement(), pair.getFirst(), pair.getSecond()); if(unit.styleOfUnitWidgetBase(pair.getFirst())) DOM.setStyleAttribute(unit.basePanel.getElement(), pair.getFirst(), pair.getSecond()); } @@ -1222,7 +1223,7 @@ UnitWidget unit = (UnitWidget)source; for (Pair<String, String> pair : this.unitFocusCssNamesAndStyles) { if(pair.getFirst().equals("textDecoration"))unit.setTextDecoration(pair.getSecond()); - else DOM.setStyleAttribute(unit.fieldset, pair.getFirst(), pair.getSecond()); + else DOM.setStyleAttribute(unit.basePanel.getElement(), pair.getFirst(), pair.getSecond()); if(unit.styleOfUnitWidgetBase(pair.getFirst())) DOM.setStyleAttribute(unit.basePanel.getElement(), pair.getFirst(), pair.getSecond()); } @@ -1238,7 +1239,7 @@ UnitWidget unit = (UnitWidget)widget; for (Pair<String, String> pair : this.unitActiveCssNamesAndStyles) { if(pair.getFirst().equals("textDecoration"))unit.setTextDecoration(pair.getSecond()); - else DOM.setStyleAttribute(unit.fieldset, pair.getFirst(), pair.getSecond()); + else DOM.setStyleAttribute(unit.basePanel.getElement(), pair.getFirst(), pair.getSecond()); if(unit.styleOfUnitWidgetBase(pair.getFirst())) DOM.setStyleAttribute(unit.basePanel.getElement(), pair.getFirst(), pair.getSecond()); } @@ -1255,7 +1256,7 @@ UnitWidget unit = (UnitWidget)source; for (Pair<String, String> pair : this.unitActiveCssNamesAndStyles) { if(pair.getFirst().equals("textDecoration"))unit.setTextDecoration(pair.getSecond()); - else DOM.setStyleAttribute(unit.fieldset, pair.getFirst(), pair.getSecond()); + else DOM.setStyleAttribute(unit.basePanel.getElement(), pair.getFirst(), pair.getSecond()); if(unit.styleOfUnitWidgetBase(pair.getFirst())) DOM.setStyleAttribute(unit.basePanel.getElement(), pair.getFirst(), pair.getSecond()); } @@ -1286,7 +1287,326 @@ return TmHelper.getFirstContainee(super.getTmRepresentative(), containees); } + + + protected class UnitWidget extends Composite implements HasFocusHandlers, HasBlurHandlers, HasMouseOutHandlers, HasMouseOverHandlers, HasMouseDownHandlers, HasMouseUpHandlers{ + private CaptionPanel basePanel = new CaptionPanel(); + private Topic tmRepresentative = null; + private ArrayList<Widget> subElements = new ArrayList<Widget>(); + + + private UnitWidget(){ + initWidget(this.basePanel); + } + + + public UnitWidget(Topic tmRepresentative){ + this(); + this.tmRepresentative = tmRepresentative; + } + + + public Topic getTmRepresentative(){ + return this.tmRepresentative; + } + + + + // appends a new element in form of a topic to this unit-widget + public GdlVisibleObject append(Topic ancestor, Topic current) throws ExecutionException, InvalidGdlSchemaException { + 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)); + + GdlVisibleObject newObj = GdlInstantiator.instantiate(current); + GdlVisibleObject oldObj = null; + for (Widget widget : this.subElements){ + if(((GdlVisibleObject)widget).getTmRepresentative().equals(ancestor)){ + oldObj = (GdlVisibleObject)widget; + break; + } + } + + this.subElements.add(newObj); + if(this.getTmRepresentative().equals(ancestor)){ + this.basePanel.add(newObj); + } + else{ + Element elemBefore = oldObj.getElement(); + Element elemAfter = DOM.getNextSibling(elemBefore); + // insert before seems to be a more accepted and stable + // way of inserting new child elements than insertAfter + if(elemAfter == null) this.basePanel.add(newObj); + else this.basePanel.getElement().insertBefore(newObj.getElement(), elemAfter); + } + position.setAttributes(newObj); + return newObj; + } + + + public void setId(String id){ + DOM.setElementAttribute(this.basePanel.getElement(), "id", id); + } + + // some css style setters + public void setHeight(String value){ + DOM.setStyleAttribute(this.basePanel.getElement(), "height", value); + } + + + public void setMaxHeight(String value){ + DOM.setStyleAttribute(this.basePanel.getElement(), "maxHeight", value); + } + + + public void setMinHeight(String value){ + DOM.setStyleAttribute(this.basePanel.getElement(), "minHeight", value); + } + + + public void setWidth(String value){ + DOM.setStyleAttribute(this.basePanel.getElement(), "width", value); + } + + + public void setMaxWidth(String value){ + DOM.setStyleAttribute(this.basePanel.getElement(), "maxWidth", value); + } + + + public void setMinWidth(String value){ + DOM.setStyleAttribute(this.basePanel.getElement(), "minWidth", value); + } + + + public void setBorderWidth(String value){ + DOM.setStyleAttribute(this.basePanel.getElement(), "borderWidth", value); + } + + + public void setBorderTopWidth(String value){ + DOM.setStyleAttribute(this.basePanel.getElement(), "borderTopWidth", value); + } + + + public void setBorderRightWidth(String value){ + DOM.setStyleAttribute(this.basePanel.getElement(), "borderRightWidth", value); + } + + + public void setBorderBottomWidth(String value){ + DOM.setStyleAttribute(this.basePanel.getElement(), "borderBottomWidth", value); + } + + + public void setBorderLeftWidth(String value){ + DOM.setStyleAttribute(this.basePanel.getElement(), "borderLeftWidth", value); + } + + + public void setBorderColor(String value){ + DOM.setStyleAttribute(this.basePanel.getElement(), "borderColor", value); + } + + + public void setBorderTopColor(String value){ + DOM.setStyleAttribute(this.basePanel.getElement(), "borderTopColor", value); + } + + + public void setBorderRightColor(String value){ + DOM.setStyleAttribute(this.basePanel.getElement(), "borderRightColor", value); + } + + + public void setTextDecoration(String value){ + DOM.setStyleAttribute(this.basePanel.getElement(), "textDecoration", value); + } + + + public void setBorderBottomColor(String value){ + DOM.setStyleAttribute(this.basePanel.getElement(), "borderBottomColor", value); + } + + + public void setBorderLeftColor(String value){ + DOM.setStyleAttribute(this.basePanel.getElement(), "borderLeftColor", value); + } + + + public void setBorderStyle(String value){ + DOM.setStyleAttribute(this.basePanel.getElement(), "borderStyle", value); + } + + + public void setBorderTopStyle(String value){ + DOM.setStyleAttribute(this.basePanel.getElement(), "borderTopStyle", value); + } + + + public void setBorderRightStyle(String value){ + DOM.setStyleAttribute(this.basePanel.getElement(), "borderRightStyle", value); + } + + + public void setBorderBottomStyle(String value){ + DOM.setStyleAttribute(this.basePanel.getElement(), "borderBottomStyle", value); + } + + + public void setBorderLeftStyle(String value){ + DOM.setStyleAttribute(this.basePanel.getElement(), "borderLeftStyle", value); + } + + + public void setPadding(String value){ + DOM.setStyleAttribute(this.basePanel.getElement(), "padding", value); + } + + + public void setPaddingTop(String value){ + DOM.setStyleAttribute(this.basePanel.getElement(), "paddingTop", value); + } + + + public void setPaddingRight(String value){ + DOM.setStyleAttribute(this.basePanel.getElement(), "paddingRight", value); + } + + + public void setPaddingBottom(String value){ + DOM.setStyleAttribute(this.basePanel.getElement(), "paddingBottom", value); + } + + + public void setPaddingLeft(String value){ + DOM.setStyleAttribute(this.basePanel.getElement(), "paddingLeft", value); + } + + + public void setMargin(String value){ + DOM.setStyleAttribute(this.basePanel.getElement(), "margin", value); + } + + + public void setMarginTop(String value){ + DOM.setStyleAttribute(this.basePanel.getElement(), "marginTop", value); + } + + + public void setMarginRight(String value){ + DOM.setStyleAttribute(this.basePanel.getElement(), "marginRight", value); + } + + + public void setMarginBottom(String value){ + DOM.setStyleAttribute(this.basePanel.getElement(), "marginBottom", value); + } + + + public void setMarginLeft(String value){ + DOM.setStyleAttribute(this.basePanel.getElement(), "marginLeft", value); + } + + + public void setBorderRadius(String value){ + DOM.setStyleAttribute(this.basePanel.getElement(), "borderRadius", value); + } + + + public void setBorderTopRightRadius(String value){ + DOM.setStyleAttribute(this.basePanel.getElement(), "borderTopRightRadius", value); + } + + + public void setBorderBottomRightRadius(String value){ + DOM.setStyleAttribute(this.basePanel.getElement(), "borderBottomRightRadius", value); + } + + + public void setBorderBottomLeftRadius(String value){ + DOM.setStyleAttribute(this.basePanel.getElement(), "borderBottomLeftRadius", value); + } + + + public void setBorderTopLeftRadius(String value){ + DOM.setStyleAttribute(this.basePanel.getElement(), "borderTopLeftRadius", value); + } + + + public String getCaption() { + return this.basePanel.getCaptionText(); + } + + + // sets the unit's name. If the name is "" or null, + // the legend element is set to non-visible + public void setCaption(String caption) { + if(caption == null || caption.length() == 0){ + this.basePanel.setCaptionText(caption); + //DOM.setStyleAttribute(this.legend, "display", "none"); + } else { + this.basePanel.setCaptionText(caption); + //DOM.setStyleAttribute(this.legend, "display", "inline"); + } + } + + + // returns true if the passed style property must be applied on both the fieldset and absolutepanel + public boolean styleOfUnitWidgetBase(String styleProperty){ + if(styleProperty.equals("borderWidth") || styleProperty.equals("borderTopWidth") || styleProperty.equals("borderRightWidth") || styleProperty.equals("borderBottomWidth") || styleProperty.equals("borderLeftWidth")){ + return false; + }else if(styleProperty.equals("borderColor") || styleProperty.equals("borderTopColor") || styleProperty.equals("borderRightColor") || styleProperty.equals("borderBottomColor") || styleProperty.equals("borderLeftColor")){ + return false; + }else if(styleProperty.equals("padding") || styleProperty.equals("paddingTop") || styleProperty.equals("paddingRight") || styleProperty.equals("paddingBottom") || styleProperty.equals("paddingLeft")){ + return false; + }else if(styleProperty.equals("margin") || styleProperty.equals("marginTop") || styleProperty.equals("marginRight") || styleProperty.equals("marginBottom") || styleProperty.equals("marginLeft")){ + return false; + }else if(styleProperty.equals("borderRadius") || styleProperty.equals("borderTopRightRadius") || styleProperty.equals("borderBottomRightRadius") || styleProperty.equals("borderBottomLeftRadius") || styleProperty.equals("borderTopLeftRadius")){ + return false; + }else { + return true; + } + } + + + @Override + public HandlerRegistration addMouseUpHandler(MouseUpHandler handler) { + return this.addDomHandler(handler, MouseUpEvent.getType()); + } + + + @Override + public HandlerRegistration addMouseDownHandler(MouseDownHandler handler) { + return this.addDomHandler(handler, MouseDownEvent.getType()); + } + + + @Override + public HandlerRegistration addMouseOverHandler(MouseOverHandler handler) { + return this.addDomHandler(handler, MouseOverEvent.getType()); + } + + + @Override + public HandlerRegistration addMouseOutHandler(MouseOutHandler handler) { + return this.addDomHandler(handler, MouseOutEvent.getType()); + } + + + @Override + public HandlerRegistration addBlurHandler(BlurHandler handler) { + return this.addDomHandler(handler, BlurEvent.getType()); + } + + + @Override + public HandlerRegistration addFocusHandler(FocusHandler handler) { + return this.addDomHandler(handler, FocusEvent.getType()); + } + } + + /* // wraps a fieldset with a legend item that represent a group-element protected class UnitWidget extends Composite implements HasFocusHandlers, HasBlurHandlers, HasMouseOutHandlers, HasMouseOverHandlers, HasMouseDownHandlers, HasMouseUpHandlers{ private AbsolutePanel basePanel = new AbsolutePanel(); @@ -1611,4 +1931,5 @@ } } } + */ } \ No newline at end of file
Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/war/gdl_widgets/test.gdl.jtm ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_Widgets/war/gdl_widgets/test.gdl.jtm Wed Jul 20 07:32:13 2011 (r651) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/war/gdl_widgets/test.gdl.jtm Wed Jul 20 10:01:42 2011 (r652) @@ -38,6 +38,7 @@ {"subject_identifiers":["[gdl:nth-element]"], "instance_of":["si:[tmcl:role-type]"]}, {"subject_identifiers":["[gdl:background-color]"], "instance_of":["si:[tmcl:occurrence-type]"]}, {"subject_identifiers":["[gdl:width]"], "instance_of":["si:[tmcl:occurrence-type]"]}, + {"subject_identifiers":["[gdl:unit-name]"], "instance_of":["si:[tmcl:occurrence-type]"]}, {"subject_identifiers":["[gdl:height]"], "instance_of":["si:[tmcl:occurrence-type]"]}, {"subject_identifiers":["[gdl:font-weight]"], "instance_of":["si:[tmcl:occurrence-type]"]}, {"subject_identifiers":["[doc:default-creator-topic-view-1]"], "instance_of":["si:[gdl:Default-Creator-Topic-View]"], "names":[{"value": "Def. Creator View 1", "type":"si:[gdl:view-name]"}], "occurrences":[{"type":"si:[gdl:id]", "value":"default_creator_topic_view_1_id", "datatype":"[xsd:ID]"}, {"type":"si:[gdl:background-color]", "value":"#ccc"}, {"type":"si:[gdl:width]", "value":"500px"}, {"type":"si:[gdl:height]", "value":"600px"}]}, @@ -51,6 +52,7 @@ {"subject_identifiers":["[doc:list-item-2]"], "instance_of":["si:[gdl:Text]"], "occurrences":[{"type":"si:[gdl:id]", "value":"list_item_2_id", "datatype":"[xsd:ID]"}, {"type":"si:[gdl:padding]", "value":"5px"}, {"type":"si:[gdl:margin-top]", "value":"5px"}]}, {"subject_identifiers":["[gdl:List-Box]"]}, {"subject_identifiers":["[doc:text-1]"], "instance_of":["si:[gdl:Text]"], "occurrences":[{"type":"si:[gdl:id]", "value":"text_1_id", "datatype":"[xsd:ID]"}, {"type":"si:[gdl:readonly]", "value":"false", "datatype":"[xsd:boolean]"}]}, + {"subject_identifiers":["[doc:unit-1]"], "instance_of":["si:[gdl:Unit]"], "occurrences":[{"type":"si:[gdl:id]", "value":"unit_1_id", "datatype":"[xsd:ID]"}, {"type":"si:[gdl:unit-name]", "value":"unit 1"}]}, {"subject_identifiers":["[doc:title-1]"], "instance_of":["si:[gdl:Title]"], "occurrences":[{"type":"si:[gdl:id]", "value":"title_1_id", "datatype":"[xsd:ID]"}, {"type":"si:[gdl:text-decoration]", "value":"underline"}, {"type":"si:[gdl:background-color]", "value":"#ccc"}, {"type":"si:[gdl:font-weight]", "value":"bold"}]}, {"subject_identifiers":["[doc:reference-1]"], "instance_of":["si:[gdl:Reference]"], "occurrences":[{"type":"si:[gdl:id]", "value":"reference_1_id", "datatype":"[xsd:ID]"}, {"type":"si:[gdl:margin-left]", "value":"200px"}, {"type":"si:[gdl:background-color]", "value":"yellow"}]}, {"subject_identifiers":["[doc:list-box-1]"], "instance_of":["si:[gdl:List-Box]"], "occurrences":[{"type":"si:[gdl:id]", "value":"list_box_1_id", "datatype":"[xsd:ID]"}]}, @@ -60,12 +62,14 @@ {"subject_identifiers":["[doc:pos-of-reference-1]"], "instance_of":["si:[gdl:Position]"], "occurrences":[{"type":"si:[gdl:position-style]", "value":"static"}]}, {"subject_identifiers":["[doc:pos-of-list-box-1]"], "instance_of":["si:[gdl:Position]"], "occurrences":[{"type":"si:[gdl:position-style]", "value":"absolute"}, {"type":"si:[gdl:bottom]", "value":"5px"}, {"type":"si:[gdl:right]", "value":"5px"}]}, {"subject_identifiers":["[doc:pos-of-person-list]"], "instance_of":["si:[gdl:Position]"]}, + {"subject_identifiers":["[doc:pos-of-unit]"], "instance_of":["si:[gdl:Position]"]}, {"subject_identifiers":["[gdl:position-style]"], "instance_of":["si:[tmcl:occurrence-type]"]}, {"subject_identifiers":["[gdl:top]"], "instance_of":["si:[tmcl:occurrence-type]"]}, {"subject_identifiers":["[gdl:right]"], "instance_of":["si:[tmcl:occurrence-type]"]}, {"subject_identifiers":["[gdl:bottom]"], "instance_of":["si:[tmcl:occurrence-type]"]}, {"subject_identifiers":["[gdl:left]"], "instance_of":["si:[tmcl:occurrence-type]"]}, {"subject_identifiers":["[gdl:TM-Value]"]}, + {"subject_identifiers":["[gdl:Unit]"]}, {"subject_identifiers":["[gdl:Nth-Element]"]}, {"subject_identifiers":["[gdl:nth-value]"], "instance_of":["si:[tmcl:occurrence-type]"]}, {"subject_identifiers":["[doc:nth-elem-1]"], "instance_of":["si:[gdl:Nth-Element]"], "occurrences":[{"type":"si:[gdl:nth-value]", "value":"0"}]}, @@ -117,6 +121,7 @@ {"type":"si:[tmdm:supertype-subtype]", "roles":[{"type":"si:[tmdm:supertype]", "player":"si:[gdl:Text-Object]"},{"type":"si:[tmdm:subtype]", "player":"si:[gdl:List-Box]"}]}, {"type":"si:[tmdm:supertype-subtype]", "roles":[{"type":"si:[tmdm:supertype]", "player":"si:[gdl:Visible-Object]"},{"type":"si:[tmdm:subtype]", "player":"si:[gdl:List]"}]}, {"type":"si:[tmdm:supertype-subtype]", "roles":[{"type":"si:[tmdm:supertype]", "player":"si:[gdl:Descriptor]"},{"type":"si:[tmdm:subtype]", "player":"si:[gdl:Nth-Element]"}]}, + {"type":"si:[tmdm:supertype-subtype]", "roles":[{"type":"si:[tmdm:supertype]", "player":"si:[gdl:Text-Object]"},{"type":"si:[tmdm:subtype]", "player":"si:[gdl:Unit]"}]}, {"type":"si:[gdl:contains]", "roles":[{"type":"si:[gdl:container]", "player":"si:[doc:test-schema]"},{"type":"si:[gdl:containee]", "player":"si:[doc:default-creator-topic-view-1]"}]}, {"type":"si:[gdl:contains]", "roles":[{"type":"si:[gdl:container]", "player":"si:[doc:test-schema]"},{"type":"si:[gdl:containee]", "player":"si:[doc:default-creator-topic-view-2]"}]}, {"type":"si:[gdl:contains]", "roles":[{"type":"si:[gdl:container]", "player":"si:[doc:test-schema]"},{"type":"si:[gdl:containee]", "player":"si:[doc:default-editor-topic-view]"}]}, @@ -139,11 +144,13 @@ {"type":"si:[gdl:contains]", "roles":[{"type":"si:[gdl:container]", "player":"si:[doc:default-creator-topic-view-1]"},{"type":"si:[gdl:containee]", "player":"si:[doc:reference-1]"}]}, {"type":"si:[gdl:contains]", "roles":[{"type":"si:[gdl:container]", "player":"si:[doc:default-creator-topic-view-1]"},{"type":"si:[gdl:containee]", "player":"si:[doc:list-box-1]"}]}, {"type":"si:[gdl:contains]", "roles":[{"type":"si:[gdl:container]", "player":"si:[doc:default-creator-topic-view-1]"},{"type":"si:[gdl:containee]", "player":"si:[doc:person-list]"}]}, + {"type":"si:[gdl:contains]", "roles":[{"type":"si:[gdl:container]", "player":"si:[doc:default-creator-topic-view-1]"},{"type":"si:[gdl:containee]", "player":"si:[doc:unit-1]"}]}, {"type":"si:[gdl:position]", "roles":[{"type":"si:[gdl:descriptor]", "player":"si:[doc:pos-of-title-1]"},{"type":"si:[gdl:ancestor]", "player":"si:[doc:default-creator-topic-view-1]"}, {"type":"si:[gdl:descendant]", "player":"si:[doc:title-1]"}]}, {"type":"si:[gdl:position]", "roles":[{"type":"si:[gdl:descriptor]", "player":"si:[doc:pos-of-text-1]"},{"type":"si:[gdl:ancestor]", "player":"si:[doc:title-1]"}, {"type":"si:[gdl:descendant]", "player":"si:[doc:text-1]"}]}, {"type":"si:[gdl:position]", "roles":[{"type":"si:[gdl:descriptor]", "player":"si:[doc:pos-of-reference-1]"},{"type":"si:[gdl:ancestor]", "player":"si:[doc:text-1]"}, {"type":"si:[gdl:descendant]", "player":"si:[doc:reference-1]"}]}, {"type":"si:[gdl:position]", "roles":[{"type":"si:[gdl:descriptor]", "player":"si:[doc:pos-of-list-box-1]"},{"type":"si:[gdl:ancestor]", "player":"si:[doc:reference-1]"}, {"type":"si:[gdl:descendant]", "player":"si:[doc:list-box-1]"}]}, {"type":"si:[gdl:position]", "roles":[{"type":"si:[gdl:descriptor]", "player":"si:[doc:pos-of-person-list]"},{"type":"si:[gdl:ancestor]", "player":"si:[doc:list-box-1]"}, {"type":"si:[gdl:descendant]", "player":"si:[doc:person-list]"}]}, + {"type":"si:[gdl:position]", "roles":[{"type":"si:[gdl:descriptor]", "player":"si:[doc:pos-of-unit]"},{"type":"si:[gdl:ancestor]", "player":"si:[doc:person-list]"}, {"type":"si:[gdl:descendant]", "player":"si:[doc:unit-1]"}]}, {"type":"si:[gdl:contains]", "roles":[{"type":"si:[gdl:container]", "player":"si:[doc:person-list]"},{"type":"si:[gdl:containee]", "player":"si:[doc:list-item-1]"}, {"type":"si:[gdl:nth-element]", "player":"si:[doc:nth-elem-1]"}]}, {"type":"si:[gdl:contains]", "roles":[{"type":"si:[gdl:container]", "player":"si:[doc:person-list]"},{"type":"si:[gdl:containee]", "player":"si:[doc:list-item-2]"}, {"type":"si:[gdl:nth-element]", "player":"si:[doc:nth-elem-2]"}]}, {"type":"si:[gdl:contains]", "roles":[{"type":"si:[gdl:container]", "player":"si:[doc:person-list]"},{"type":"si:[gdl:containee]", "player":"si:[doc:list-item-3]"}, {"type":"si:[gdl:nth-element]", "player":"si:[doc:nth-elem-3]"}]}