Author: lgiessmann Date: Tue Aug 16 13:43:05 2011 New Revision: 738
Log: gdl-frontend: Widgets: finalised the TextGrid GDL-definition for editing instances of http://textgrid.org/serviceregistry/model/Environment
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/TmHelper.java branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/environment/GdlInstantiator.java branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/isidorus/LoadSchemaCallback.java branches/gdl-frontend/src/anaToMia/GDL_Widgets/war/gdl_widgets/TextGrid_GDL_Edit_Environment.jtm
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 Tue Aug 16 06:53:55 2011 (r737) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/TestClass.java Tue Aug 16 13:43:05 2011 (r738) @@ -27,16 +27,18 @@ mainPanel.setPixelSize(1000, 600); ArrayList<Pair<String, TopicIdentifierTypes>> requestedTopicsToCreate = new ArrayList<Pair<String,TopicIdentifierTypes>>(); - requestedTopicsToCreate.add(new Pair<String, TopicIdentifierTypes>("http://textgrid.org/serviceregistry/model/Environment", TopicIdentifierTypes.SubjectIdentifier)); + //requestedTopicsToCreate.add(new Pair<String, TopicIdentifierTypes>("http://textgrid.org/serviceregistry/model/Environment", TopicIdentifierTypes.SubjectIdentifier)); //requestedTopicsToCreate.add(new Pair<String, TopicIdentifierTypes>("http://psi.test.org/gdl-test/Poet", TopicIdentifierTypes.SubjectIdentifier)); //requestedTopicsToCreate.add(new Pair<String, TopicIdentifierTypes>("http://psi.test.org/gdl-test/Musician", TopicIdentifierTypes.SubjectIdentifier)); + + Pair<String, TopicIdentifierTypes> requestedTopicToEdit = new Pair<String, TopicIdentifierTypes>("http://textgrid.org/serviceregistry/model/test-environment", TopicIdentifierTypes.SubjectIdentifier); GdlPanel.addClickHandler("unit_1_text_create_button_id", new ClickHandler() { @Override public void onClick(ClickEvent event) { Window.alert("you clicked " + ((Button)event.getSource()).getText()); } }); - gdlPanel = new GdlPanel(null, requestedTopicsToCreate); + gdlPanel = new GdlPanel(requestedTopicToEdit, requestedTopicsToCreate); mainPanel.add(gdlPanel); gdlPanel.setTmEngine(new JtmsTmEngine()); gdlPanel.setLoadSchemaCallback(new LoadSchemaCallback());
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 Tue Aug 16 06:53:55 2011 (r737) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/TmHelper.java Tue Aug 16 13:43:05 2011 (r738) @@ -232,6 +232,7 @@ // returns true if the instance topic is an instance of the topic bound to typeSubectIdentifier public static boolean isInstanceOf(Topic instance, String typeSubjectIdentifier){ + if(instance == null) return false; TopicMap tm = instance.getTopicMap(); Topic type = tm.getTopicBySubjectIdentifier(tm.createLocator(typeSubjectIdentifier)); return isInstanceOf(instance, type); @@ -635,18 +636,18 @@
TopicMap tm = constraintTopic.getTopicMap(); Topic constraintRoleType = getTopicByPsi(PSIs.TMCL.tmclConstraint, tm); - Topic constraintStatementAssocType = getTopicByPsi(PSIs.TMCL.tmclConstrainedStatement, tm); + Topic constrainedStatementAssocType = getTopicByPsi(PSIs.TMCL.tmclConstrainedStatement, tm); Topic constrainedRoleType = getTopicByPsi(PSIs.TMCL.tmclConstrained, tm); Topic nameType = getTopicByPsi(PSIs.TMCL.tmclNameType, tm); Topic occurrenceType = getTopicByPsi(PSIs.TMCL.tmclOccurrenceType, tm); Topic associationType = getTopicByPsi(PSIs.TMCL.tmclAssociationType, tm); - ArrayList<Topic> constrainedNameTypes = getOtherPlayerOfBinaryAssociation(constraintTopic, constraintRoleType, constraintStatementAssocType, null, nameType, constrainedRoleType); - ArrayList<Topic> constrainedOccurrenceTypes = getOtherPlayerOfBinaryAssociation(constraintTopic, constraintRoleType, constraintStatementAssocType, null, occurrenceType, constrainedRoleType); - ArrayList<Topic> constrainedAssociationTypes = getOtherPlayerOfBinaryAssociation(constraintTopic, constraintRoleType, constraintStatementAssocType, null, associationType, constrainedRoleType); + ArrayList<Topic> constrainedNameTypes = getOtherPlayerOfBinaryAssociation(constraintTopic, constraintRoleType, constrainedStatementAssocType, null, nameType, constrainedRoleType); + ArrayList<Topic> constrainedOccurrenceTypes = getOtherPlayerOfBinaryAssociation(constraintTopic, constraintRoleType, constrainedStatementAssocType, null, occurrenceType, constrainedRoleType); + ArrayList<Topic> constrainedAssociationTypes = getOtherPlayerOfBinaryAssociation(constraintTopic, constraintRoleType, constrainedStatementAssocType, null, associationType, constrainedRoleType); ArrayList<Topic> constrainedStatements = Utils.union(Utils.union(constrainedNameTypes, constrainedOccurrenceTypes), constrainedAssociationTypes); - if(constrainedStatements.size() != 1) throw new InvalidGdlSchemaException("the topic " + getAnyIdOfTopic(constraintTopic) + "must be bound exactly once to a statement topic via a " + PSIs.TMCL.tmclConstrainedStatement + " association, but is: " + constrainedStatements.size()); + if(constrainedStatements.size() != 1) throw new InvalidGdlSchemaException("the topic " + getAnyIdOfTopic(constraintTopic) + " must be bound exactly once to a statement topic via a " + PSIs.TMCL.tmclConstrainedStatement + " association, but is: " + constrainedStatements.size()); else return constrainedStatements.get(0); }
Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/environment/GdlInstantiator.java ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/environment/GdlInstantiator.java Tue Aug 16 06:53:55 2011 (r737) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/environment/GdlInstantiator.java Tue Aug 16 13:43:05 2011 (r738) @@ -2,7 +2,6 @@
import java.util.ArrayList; - import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Association; import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Construct; import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Name; @@ -226,7 +225,6 @@ if(bindings.length() >= 2)bindings = bindings.substring(2); throw new InvalidGdlSchemaException("the topic " + requestedTopic.getFirst() + " requested for editing must be bound to exaclty one " + PSIs.TopicType.gdlDefaultEditorTopicView + ", but is bound to " + bindings); }else { - ArrayList<Pair<String, TopicIdentifierTypes>> typesOfRequestedTopic = new ArrayList<Pair<String,TopicIdentifierTypes>>(); for(int i = 0; i != requestedTop.getTypes().length(); ++i) typesOfRequestedTopic.add(TmHelper.getAnyIdenditfierOfTopic(requestedTop.getTypes().get(i))); @@ -238,10 +236,11 @@ for (Pair<String, TopicIdentifierTypes> pair : typesOfRequestedTopic) values += ", " + pair.getFirst(); if(values.length() >= 2)values = values.substring(2); - String bindings = ""; + String bindings = "["; for (Topic top : views) bindings += ", " + TmHelper.getAnyIdOfTopic(top); - if(bindings.length() >= 2)bindings = bindings.substring(2); + if(bindings.length() >= 2)bindings = bindings.substring(2) + "]"; + else bindings = "[ ]"; throw new InvalidGdlSchemaException("the combination of topic types (" + values + ") for the requested topic " + requestedTopic.getFirst() + " must be bound exactly once to a " + PSIs.TopicType.gdlDefaultEditorTopicView + " but is bound to " + bindings); }
Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/isidorus/LoadSchemaCallback.java ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/isidorus/LoadSchemaCallback.java Tue Aug 16 06:53:55 2011 (r737) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/isidorus/LoadSchemaCallback.java Tue Aug 16 13:43:05 2011 (r738) @@ -23,7 +23,7 @@ // this class can be used as a callback that requests the Topic Map data // addressable by the URI isidorusUrl public class LoadSchemaCallback implements ILoadSchemaCallback{ - private final String isidorusUrl = URL.encode(GWT.getModuleBaseURL() + "TextGrid_GDL_Create_Environment.jtm"); //"test.gdl.jtm"); // TODO: replace with the correct URL + private final String isidorusUrl = URL.encode(GWT.getModuleBaseURL() + "TextGrid_GDL_Edit_Environment.jtm"); //"test.gdl.jtm"); // TODO: replace with the correct URL private ArrayList<Pair<String, TopicIdentifierTypes>> requestedTopicsToCreate = new ArrayList<Pair<String,TopicIdentifierTypes>>(); private Pair<String, TopicIdentifierTypes> requestedTopicToEdit = null; private RequestBuilder requestBuilder = new RequestBuilder(RequestBuilder.GET, isidorusUrl);
Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/war/gdl_widgets/TextGrid_GDL_Edit_Environment.jtm ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_Widgets/war/gdl_widgets/TextGrid_GDL_Edit_Environment.jtm Tue Aug 16 06:53:55 2011 (r737) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/war/gdl_widgets/TextGrid_GDL_Edit_Environment.jtm Tue Aug 16 13:43:05 2011 (r738) @@ -0,0 +1,144 @@ +{"version":"1.1", + + "prefixes":{"tmcl":"http://psi.topicmaps.org/tmcl/", + "tmdm":"http://psi.topicmaps.org/iso13250/model/", + "tgm":"http://textgrid.org/serviceregistry/model/", + "tgg":"http://textgrid.org/serviceregistry/gdl/", + "gdl":"http://psi.isidor.us/gdl/%22%7D, + + "item_type":"topicmap", + + "item_identifiers":["[tgm:services-tm]"], + + "topics":[{"subject_identifiers":["[tmcl:topic-type]"], "instance_of":["si:[tmcl:topic-type]"]}, + {"subject_identifiers":["[tmcl:name-type]"], "instance_of":["si:[tmcl:topic-type]"]}, + {"subject_identifiers":["[tmcl:occurrence-type]"], "instance_of":["si:[tmcl:topic-type]"]}, + {"subject_identifiers":["[tmcl:role-type]"], "instance_of":["si:[tmcl:topic-type]"]}, + {"subject_identifiers":["[tmcl:association-type]"], "instance_of":["si:[tmcl:topic-type]"]}, + {"subject_identifiers":["[tmcl:card-min]"], "instance_of":["si:[tmcl:occurrence-type]"]}, + {"subject_identifiers":["[tmcl:card-max]"], "instance_of":["si:[tmcl:occurrence-type]"]}, + {"subject_identifiers":["[tmcl:constraint]"], "instance_of":["si:[tmcl:topic-type]", "si:[tmcl:role-type]"]}, + {"subject_identifiers":["[tmcl:topic-name-constraint]"], "instance_of":["si:[tmcl:topic-type]"]}, + + {"subject_identifiers":["[tmdm:supertype]"], "instance_of":["si:[tmcl:role-type]"]}, + {"subject_identifiers":["[tmdm:subtype]"], "instance_of":["si:[tmcl:role-type]"]}, + {"subject_identifiers":["[tmdm:supertype-subtype]"], "instance_of":["si:[tmcl:association-type]"]}, + + {"subject_identifiers":["[tgm:Environment]"], "instance_of":["si:[tmcl:topic-type]"]}, + {"subject_identifiers":["[tgm:environment-name-constraint]"], "instance_of":["si:[tmcl:topic-name-constraint]"], "occurrences":[{"type":"si:[tmcl:card-min]", "value":"1"}, {"type":"si:[tmcl:card-max]", "value":"1"}]}, + {"subject_identifiers":["[tgm:test-environment]"], "instance_of":["si:[tgm:Environment]"]}, + + {"subject_identifiers":["[gdl:contains]"], "instance_of":["si:[tmcl:association-type]"]}, + {"subject_identifiers":["[gdl:topic-view-binding]"], "instance_of":["si:[tmcl:association-type]"]}, + {"subject_identifiers":["[gdl:tm-binding]"], "instance_of":["si:[tmcl:association-type]"]}, + {"subject_identifiers":["[gdl:view-binding]"], "instance_of":["si:[tmcl:association-type]"]}, + {"subject_identifiers":["[gdl:value-binding]"], "instance_of":["si:[tmcl:association-type]"]}, + {"subject_identifiers":["[gdl:position]"], "instance_of":["si:[tmcl:association-type]"]}, + + {"subject_identifiers":["[gdl:container]"], "instance_of":["si:[tmcl:role-type]"]}, + {"subject_identifiers":["[gdl:containee]"], "instance_of":["si:[tmcl:role-type]"]}, + {"subject_identifiers":["[gdl:tm-value]"], "instance_of":["si:[tmcl:role-type]"]}, + {"subject_identifiers":["[gdl:value]"], "instance_of":["si:[tmcl:role-type]"]}, + {"subject_identifiers":["[gdl:descriptor]"], "instance_of":["si:[tmcl:role-type]"]}, + {"subject_identifiers":["[gdl:tm-construct]"], "instance_of":["si:[tmcl:role-type]"]}, + {"subject_identifiers":["[gdl:value-group]"], "instance_of":["si:[tmcl:role-type]"]}, + {"subject_identifiers":["[gdl:ancestor]"], "instance_of":["si:[tmcl:role-type]"]}, + {"subject_identifiers":["[gdl:descendant]"], "instance_of":["si:[tmcl:role-type]"]}, + + {"subject_identifiers":["[gdl:Schema]"], "instance_of":["si:[tmcl:topic-type]"]}, + {"subject_identifiers":["[gdl:schema-name]"], "instance_of":["si:[tmcl:name-type]"]}, + {"subject_identifiers":["[gdl:Descriptor]"], "instance_of":["si:[tmcl:topic-type]"]}, + {"subject_identifiers":["[gdl:Visible-Object]"]}, + {"subject_identifiers":["[gdl:id]"], "instance_of":["si:[tmcl:occurrence-type]"]}, + {"subject_identifiers":["[gdl:border-style]"], "instance_of":["si:[tmcl:occurrence-type]"]}, + {"subject_identifiers":["[gdl:cursor]"], "instance_of":["si:[tmcl:occurrence-type]"]}, + {"subject_identifiers":["[gdl:width]"], "instance_of":["si:[tmcl:occurrence-type]"]}, + {"subject_identifiers":["[gdl:height]"], "instance_of":["si:[tmcl:occurrence-type]"]}, + {"subject_identifiers":["[gdl:background-color]"], "instance_of":["si:[tmcl:occurrence-type]"]}, + {"subject_identifiers":["[gdl:View]"]}, + {"subject_identifiers":["[gdl:view-name]"], "instance_of":["si:[tmcl:name-type]"]}, + {"subject_identifiers":["[gdl:Topic-View]"]}, + {"subject_identifiers":["[gdl:Default-Topic-View]"]}, + {"subject_identifiers":["[gdl:Default-Editor-Topic-View]"]}, + {"subject_identifiers":["[gdl:Value]"]}, + {"subject_identifiers":["[gdl:TM-Value]"]}, + {"subject_identifiers":["[gdl:TM-Single-Type-Value]"]}, + {"subject_identifiers":["[gdl:Literal-Value]"]}, + {"subject_identifiers":["[gdl:literal-value]"], "instance_of":["si:[tmcl:occurrence-type]"]}, + {"subject_identifiers":["[gdl:Default-Value]"]}, + {"subject_identifiers":["[gdl:fixed]"], "instance_of":["si:[tmcl:occurrence-type]"]}, + {"subject_identifiers":["[gdl:Default-Literal-Value]"]}, + {"subject_identifiers":["[gdl:Text-Object]"]}, + {"subject_identifiers":["[gdl:font-size]"], "instance_of":["si:[tmcl:occurrence-type]"]}, + {"subject_identifiers":["[gdl:Text]"]}, + {"subject_identifiers":["[gdl:readonly]"], "instance_of":["si:[tmcl:occurrence-type]"]}, + {"subject_identifiers":["[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:left]"], "instance_of":["si:[tmcl:occurrence-type]"]}, + {"subject_identifiers":["[gdl:Value-Group]"]}, + {"subject_identifiers":["[gdl:Button]"]}, + {"subject_identifiers":["[gdl:Action-Button]"]}, + {"subject_identifiers":["[gdl:Delete-Button]"]}, + + {"subject_identifiers":["[tgg:textgrid-ui-schema]"], "instance_of":["si:[gdl:Schema]"], "names":[{"type":"si:[gdl:schema-name]", "value":"GDL Schema for the TextGrid-ServiceRegistry-UI"}]}, + {"subject_identifiers":["[tgg:environment-default-editor-topic-view]"], "instance_of":["si:[gdl:Default-Editor-Topic-View]"], "names":[{"type":"si:[gdl:view-name]", "value":"GDL Default Editor Topic View for instances of http://textgrid.org/serviceregistry/model/Environment%22%7D], "occurrences":[{"type":"si:[gdl:id]", "value":"environment_default_editor_topic_view_id"}, {"type":"si:[gdl:width]", "value":"300px"}, {"type":"si:[gdl:height]", "value":"100px"},{"type":"si:[gdl:background-color]", "value":"gray"}]}, + {"subject_identifiers":["[tgg:environment-editor-view-binding]"], "instance_of":["si:[gdl:TM-Single-Type-Value]"]}, + + {"subject_identifiers":["[tgg:environment-text-label]"], "instance_of":["si:[gdl:Text]"], "occurrences":[{"type":"si:[gdl:id]", "value":"environment_text_label_id"}, {"type":"si:[gdl:readonly]", "value":"true"}, {"type":"si:[gdl:width]", "value":"40px"},{"type":"si:[gdl:background-color]", "value":"gray"}, {"type":"si:[gdl:border-style]", "value":"none"}]}, + {"subject_identifiers":["[tgg:environment-text-label-position]"], "instance_of":["si:[gdl:Position]"], "occurrences":[{"type":"si:[gdl:position-style]", "value":"absolute"}, {"type":"si:[gdl:top]", "value":"10px"}, {"type":"si:[gdl:left]", "value":"10px"}]}, + {"subject_identifiers":["[tgg:environment-text-label-value-group]"], "instance_of":["si:[gdl:Value-Group]"]}, + {"subject_identifiers":["[tgg:environment-text-label-value]"], "instance_of":["si:[gdl:Default-Literal-Value]"], "occurrences":[{"type":"si:[gdl:literal-value]", "value":"name:"}]}, + + {"subject_identifiers":["[tgg:environment-name-text]"], "instance_of":["si:[gdl:Text]"], "occurrences":[{"type":"si:[gdl:id]", "value":"environment_name_text_id"}, {"type":"si:[gdl:readonly]", "value":"true"}, {"type":"si:[gdl:width]", "value":"240px"},{"type":"si:[gdl:cursor]", "value":"text"}]}, + {"subject_identifiers":["[tgg:environment-name-text-position]"], "instance_of":["si:[gdl:Position]"], "occurrences":[{"type":"si:[gdl:position-style]", "value":"absolute"}, {"type":"si:[gdl:top]", "value":"10px"}, {"type":"si:[gdl:left]", "value":"50px"}]}, + {"subject_identifiers":["[tgg:environment-name-text-value-group]"], "instance_of":["si:[gdl:Value-Group]"]}, + + {"subject_identifiers":["[tgg:environment-delete-button]"], "instance_of":["si:[gdl:Delete-Button]"], "occurrences":[{"type":"si:[gdl:id]", "value":"environment_delete_button_id"}, {"type":"si:[gdl:height]", "value":"30px"}, {"type":"si:[gdl:width]", "value":"80px"}, {"type":"si:[gdl:font-size]", "value":"12px"}]}, + {"subject_identifiers":["[tgg:environment-delete-button-position]"], "instance_of":["si:[gdl:Position]"], "occurrences":[{"type":"si:[gdl:position-style]", "value":"absolute"}, {"type":"si:[gdl:top]", "value":"65px"}, {"type":"si:[gdl:left]", "value":"10px"}]}, + + {"subject_identifiers":["[tmcl:constrained]"], "instance_of":["si:[tmcl:role-type]"]}, + {"subject_identifiers":["[tmcl:constrained-statement]"], "instance_of":["si:[tmcl:association-type]"]}, + {"subject_identifiers":["[tgm:environment-name]"], "instance_of":["si:[tmcl:name-type]"]} + ], + + "associations":[{"type":"si:[tmdm:supertype-subtype]", "roles":[{"type":"si:[tmdm:supertype]", "player":"si:[tmcl:constraint]"},{"type":"si:[tmdm:subtype]", "player":"si:[tmcl:topic-name-constraint]"}]}, + {"type":"si:[tmdm:supertype-subtype]", "roles":[{"type":"si:[tmdm:supertype]", "player":"si:[gdl:Descriptor]"},{"type":"si:[tmdm:subtype]", "player":"si:[gdl:Visible-Object]"}]}, + {"type":"si:[tmdm:supertype-subtype]", "roles":[{"type":"si:[tmdm:supertype]", "player":"si:[gdl:Visible-Object]"},{"type":"si:[tmdm:subtype]", "player":"si:[gdl:View]"}]}, + {"type":"si:[tmdm:supertype-subtype]", "roles":[{"type":"si:[tmdm:supertype]", "player":"si:[gdl:View]"},{"type":"si:[tmdm:subtype]", "player":"si:[gdl:Topic-View]"}]}, + {"type":"si:[tmdm:supertype-subtype]", "roles":[{"type":"si:[tmdm:supertype]", "player":"si:[gdl:Topic-View]"},{"type":"si:[tmdm:subtype]", "player":"si:[gdl:Default-Topic-View]"}]}, + {"type":"si:[tmdm:supertype-subtype]", "roles":[{"type":"si:[tmdm:supertype]", "player":"si:[gdl:Default-Topic-View]"},{"type":"si:[tmdm:subtype]", "player":"si:[gdl:Default-Editor-Topic-View]"}]}, + {"type":"si:[tmdm:supertype-subtype]", "roles":[{"type":"si:[tmdm:supertype]", "player":"si:[gdl:Value]"},{"type":"si:[tmdm:subtype]", "player":"si:[gdl:Descriptor]"}]}, + {"type":"si:[tmdm:supertype-subtype]", "roles":[{"type":"si:[tmdm:supertype]", "player":"si:[gdl:TM-Value]"},{"type":"si:[tmdm:subtype]", "player":"si:[gdl:Value]"}]}, + {"type":"si:[tmdm:supertype-subtype]", "roles":[{"type":"si:[tmdm:supertype]", "player":"si:[gdl:Literal-Value]"},{"type":"si:[tmdm:subtype]", "player":"si:[gdl:Value]"}]}, + {"type":"si:[tmdm:supertype-subtype]", "roles":[{"type":"si:[tmdm:supertype]", "player":"si:[gdl:Default-Value]"},{"type":"si:[tmdm:subtype]", "player":"si:[gdl:Value]"}]}, + {"type":"si:[tmdm:supertype-subtype]", "roles":[{"type":"si:[tmdm:supertype]", "player":"si:[gdl:TM-Single-Type-Value]"},{"type":"si:[tmdm:subtype]", "player":"si:[gdl:TM-Value]"}]}, + {"type":"si:[tmdm:supertype-subtype]", "roles":[{"type":"si:[tmdm:supertype]", "player":"si:[gdl:Default-Literal-Value]"},{"type":"si:[tmdm:subtype]", "player":"si:[gdl:Literal-Value]"}]}, + {"type":"si:[tmdm:supertype-subtype]", "roles":[{"type":"si:[tmdm:supertype]", "player":"si:[gdl:Default-Literal-Value]"},{"type":"si:[tmdm:subtype]", "player":"si:[gdl:Default-Value]"}]}, + {"type":"si:[tmdm:supertype-subtype]", "roles":[{"type":"si:[tmdm:supertype]", "player":"si:[gdl:Visible-Object]"},{"type":"si:[tmdm:subtype]", "player":"si:[gdl:Text-Object]"}]}, + {"type":"si:[tmdm:supertype-subtype]", "roles":[{"type":"si:[tmdm:supertype]", "player":"si:[gdl:Text-Object]"},{"type":"si:[tmdm:subtype]", "player":"si:[gdl:Text]"}]}, + {"type":"si:[tmdm:supertype-subtype]", "roles":[{"type":"si:[tmdm:supertype]", "player":"si:[gdl:Descriptor]"},{"type":"si:[tmdm:subtype]", "player":"si:[gdl:Position]"}]}, + {"type":"si:[tmdm:supertype-subtype]", "roles":[{"type":"si:[tmdm:supertype]", "player":"si:[gdl:Descriptor]"},{"type":"si:[tmdm:subtype]", "player":"si:[gdl:Value-Group]"}]}, + {"type":"si:[tmdm:supertype-subtype]", "roles":[{"type":"si:[tmdm:supertype]", "player":"si:[gdl:Text-Object]"},{"type":"si:[tmdm:subtype]", "player":"si:[gdl:Button]"}]}, + {"type":"si:[tmdm:supertype-subtype]", "roles":[{"type":"si:[tmdm:supertype]", "player":"si:[gdl:Button]"},{"type":"si:[tmdm:subtype]", "player":"si:[gdl:Action-Button]"}]}, + {"type":"si:[tmdm:supertype-subtype]", "roles":[{"type":"si:[tmdm:supertype]", "player":"si:[gdl:Action-Button]"},{"type":"si:[tmdm:subtype]", "player":"si:[gdl:Delete-Button]"}]}, + + {"type":"si:[gdl:contains]", "roles":[{"type":"si:[gdl:container]", "player":"si:[tgg:textgrid-ui-schema]"},{"type":"si:[gdl:containee]", "player":"si:[tgg:environment-default-editor-topic-view]"}]}, + {"type":"si:[gdl:tm-binding]", "roles":[{"type":"si:[gdl:descriptor]", "player":"si:[tgg:environment-editor-view-binding]"},{"type":"si:[gdl:tm-construct]", "player":"si:[tgm:Environment]"}]}, + {"type":"si:[gdl:topic-view-binding]", "roles":[{"type":"si:[gdl:descriptor]", "player":"si:[tgg:environment-default-editor-topic-view]"},{"type":"si:[gdl:tm-value]", "player":"si:[tgg:environment-editor-view-binding]"}]}, + + {"type":"si:[gdl:contains]", "roles":[{"type":"si:[gdl:container]", "player":"si:[tgg:environment-default-editor-topic-view]"},{"type":"si:[gdl:containee]", "player":"si:[tgg:environment-text-label]"}]}, + {"type":"si:[gdl:position]", "roles":[{"type":"si:[gdl:descriptor]", "player":"si:[tgg:environment-text-label-position]"},{"type":"si:[gdl:ancestor]", "player":"si:[tgg:environment-default-editor-topic-view]"},{"type":"si:[gdl:descendant]", "player":"si:[tgg:environment-text-label]"}]}, + {"type":"si:[gdl:value-binding]", "roles":[{"type":"si:[gdl:value-group]", "player":"si:[tgg:environment-text-label-value-group]"},{"type":"si:[gdl:value]", "player":"si:[tgg:environment-text-label-value]"}]}, + {"type":"si:[gdl:view-binding]", "roles":[{"type":"si:[gdl:value-group]", "player":"si:[tgg:environment-text-label-value-group]"},{"type":"si:[gdl:descriptor]", "player":"si:[tgg:environment-text-label]"}]}, + + {"type":"si:[gdl:contains]", "roles":[{"type":"si:[gdl:container]", "player":"si:[tgg:environment-default-editor-topic-view]"},{"type":"si:[gdl:containee]", "player":"si:[tgg:environment-name-text]"}]}, + {"type":"si:[gdl:position]", "roles":[{"type":"si:[gdl:descriptor]", "player":"si:[tgg:environment-name-text-position]"},{"type":"si:[gdl:ancestor]", "player":"si:[tgg:environment-text-label]"},{"type":"si:[gdl:descendant]", "player":"si:[tgg:environment-name-text]"}]}, + {"type":"si:[gdl:view-binding]", "roles":[{"type":"si:[gdl:value-group]", "player":"si:[tgg:environment-name-text-value-group]"},{"type":"si:[gdl:descriptor]", "player":"si:[tgg:environment-name-text]"}]}, + {"type":"si:[gdl:tm-binding]", "roles":[{"type":"si:[gdl:value-group]", "player":"si:[tgg:environment-name-text-value-group]"},{"type":"si:[gdl:tm-construct]", "player":"si:[tgm:environment-name-constraint]"}]}, + + {"type":"si:[gdl:contains]", "roles":[{"type":"si:[gdl:container]", "player":"si:[tgg:environment-default-editor-topic-view]"},{"type":"si:[gdl:containee]", "player":"si:[tgg:environment-delete-button]"}]}, + {"type":"si:[gdl:position]", "roles":[{"type":"si:[gdl:descriptor]", "player":"si:[tgg:environment-delete-button-position]"},{"type":"si:[gdl:ancestor]", "player":"si:[tgg:environment-name-text]"},{"type":"si:[gdl:descendant]", "player":"si:[tgg:environment-delete-button]"}]}, + + {"type":"si:[tmcl:constrained-statement]", "roles":[{"type":"si:[tmcl:constrained]", "player":"si:[tgm:environment-name]"},{"type":"si:[tmcl:constraint]", "player":"si:[tgm:environment-name-constraint]"}]} + ]} \ No newline at end of file