Author: lgiessmann Date: Wed Jul 27 11:11:28 2011 New Revision: 680
Log: gdl-frontend: Widgets: implementd GdlInfo
Added: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/text/GdlInfo.java Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/TODO.txt 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/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/war/gdl_widgets/test.gdl.jtm
Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/TODO.txt ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/TODO.txt Wed Jul 27 08:46:22 2011 (r679) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/TODO.txt Wed Jul 27 11:11:28 2011 (r680) @@ -1,3 +1,4 @@ +* Implement GdlInfo * Implement TopicMaps data consumption * Implement TopicMaps data generation * Fix css-pseudo-class-handlers (=> Buttons) \ No newline at end of file
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 Wed Jul 27 08:46:22 2011 (r679) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/GdlPsis.java Wed Jul 27 11:11:28 2011 (r680) @@ -57,6 +57,7 @@ public final static String gdlDefaultTmInstanceValue = gdl + "Default-TM-Instance-Value"; public final static String gdlDatatype = gdl + "Datatype"; public final static String gdlType = gdl + "Type"; + public final static String gdlInfo = gdl + "Info"; public final static String gdlVariantNameScope = gdl + "Variant-Name-Scope"; public final static String gdlVariantNameReifier = gdl + "Variant-Name-Reifier"; public final static String gdlVariantNameIdentifiers = gdl + "Variant-Name-Identifiers";
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 Wed Jul 27 08:46:22 2011 (r679) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/GdlVisibleObject.java Wed Jul 27 11:11:28 2011 (r680) @@ -13,6 +13,7 @@ import us.isidor.gdl.anaToMia.Widgets.environment.InvalidGdlSchemaException; import us.isidor.gdl.anaToMia.Widgets.environment.MultipleHandlerRegistration; import us.isidor.gdl.anaToMia.Widgets.environment.Pair; +import us.isidor.gdl.anaToMia.Widgets.text.GdlInfo; import us.isidor.gdl.anaToMia.Widgets.value.AbsoluteNumValue; import us.isidor.gdl.anaToMia.Widgets.value.AutoNumUnitValue; import us.isidor.gdl.anaToMia.Widgets.value.AutoNumValue; @@ -70,6 +71,7 @@ protected ArrayList<Widget> subElements = new ArrayList<Widget>(); protected ArrayList<Pair<Widget, ArrayList<EventHandler>>> eventHandlers = new ArrayList<Pair<Widget, ArrayList<EventHandler>>>(); protected ArrayList<Pair<Topic, Integer>> actionButtonsAndPositions = null; + protected ArrayList<GdlInfo> infoElements = new ArrayList<GdlInfo>();
// some constructors @@ -94,6 +96,18 @@ return this.tmRepresentative; } + + // sets all info elements as defined in the GDL + public void setInfoElements() throws InvalidGdlSchemaException, ExecutionException{ + ArrayList<Topic> infos = TmHelper.topicContainsInfo(this.tmRepresentative); + + for (Topic info : infos){ + GdlInfo elem = (GdlInfo)GdlInstantiator.instantiate(info); + this.infoElements.add(elem); + elem.setPosition(this.mainPanel); + } + } + // this method should be invoked if a new sub-element is added to this instance protected ButtonableObject addToContainerPanel(Widget widget) throws ExecutionException, InvalidGdlSchemaException{ @@ -1785,4 +1799,23 @@ Window.alert("could not apply the default CSS style >> " + e.getClass() + " >> " + e.getMessage()); } } + + + // removes all GdlInfo elements. They must be remove explicitly, since they are + // bound to the root panel/body + public void clear(){ + for (GdlInfo elem : this.infoElements) + elem.removeFromParent(); + } + + + @Override + public void onAttach(){ + super.onAttach(); + try{ + this.setInfoElements(); + }catch(Exception e){ + e.printStackTrace(); + } + } }
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 Wed Jul 27 08:46:22 2011 (r679) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/TestClass.java Wed Jul 27 11:11:28 2011 (r680) @@ -51,10 +51,7 @@ } }); - mainPanel.add(requestButton); - - - + mainPanel.add(requestButton); /* // only for testing
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 27 08:46:22 2011 (r679) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/TmHelper.java Wed Jul 27 11:11:28 2011 (r680) @@ -329,6 +329,19 @@ } + // returns all instances of gdl:Info that are related to the passed topic via a contains association + public static ArrayList<Topic> topicContainsInfo(Topic container) { + if(container == null) return new ArrayList<Topic>(); + TopicMap tm = container.getTopicMap(); + Topic containsAssocType = getTopicByPsi(GdlPsis.AssociationType.gdlContains, tm); + Topic containerRoleType = getTopicByPsi(GdlPsis.RoleType.gdlContainer, tm); + Topic info = getTopicByPsi(GdlPsis.TopicType.gdlInfo, tm); + Topic containeeRoleType = getTopicByPsi(GdlPsis.RoleType.gdlContainee, tm); + + return getOtherPlayerOfBinaryAssociation(container, containerRoleType, containsAssocType, null, info, containeeRoleType); + } + + // Returns all pairs of topics and string that are of type gdl:Action-Button and are // bound to the passed topic via a gdl:contains and via a gdl:button-position association. // The topic is the gdl:Action-Button instance, whereas the string is the value of the
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 Wed Jul 27 08:46:22 2011 (r679) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/environment/GdlInstantiator.java Wed Jul 27 11:11:28 2011 (r680) @@ -24,6 +24,7 @@ import us.isidor.gdl.anaToMia.Widgets.complexData.GdlVideo; import us.isidor.gdl.anaToMia.Widgets.container.GdlList; import us.isidor.gdl.anaToMia.Widgets.container.GdlUnit; +import us.isidor.gdl.anaToMia.Widgets.text.GdlInfo; import us.isidor.gdl.anaToMia.Widgets.text.GdlListBox; import us.isidor.gdl.anaToMia.Widgets.text.GdlReference; import us.isidor.gdl.anaToMia.Widgets.text.GdlText; @@ -44,6 +45,8 @@ return new GdlSpace(tmRepresentative); }else if(TmHelper.isInstanceOf(tmRepresentative, GdlPsis.TopicType.gdlTitle)){ return new GdlTitle(tmRepresentative); + }else if(TmHelper.isInstanceOf(tmRepresentative, GdlPsis.TopicType.gdlInfo)){ + return new GdlInfo(tmRepresentative); }else if(TmHelper.isInstanceOf(tmRepresentative, GdlPsis.TopicType.gdlReference)){ return new GdlReference(tmRepresentative); }else if(TmHelper.isInstanceOf(tmRepresentative, GdlPsis.TopicType.gdlRadioButton)){
Added: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/text/GdlInfo.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/GdlInfo.java Wed Jul 27 11:11:28 2011 (r680) @@ -0,0 +1,61 @@ +package us.isidor.gdl.anaToMia.Widgets.text; + +import com.google.gwt.user.client.DOM; +import com.google.gwt.user.client.ui.Label; +import com.google.gwt.user.client.ui.RootPanel; +import com.google.gwt.user.client.ui.Widget; + +import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Topic; +import us.isidor.gdl.anaToMia.Widgets.environment.ExecutionException; +import us.isidor.gdl.anaToMia.Widgets.environment.InvalidGdlSchemaException; + +public class GdlInfo extends GdlTextObject { + // some constructors + protected GdlInfo(){ + super(); + } + + + public GdlInfo(Topic tmRepresentative) throws InvalidGdlSchemaException, ExecutionException{ + super(tmRepresentative); + RootPanel.get().add(this); + super.setGdlStyle(); + // TODO: create an info element for each tm construct + this.createNewInfo().setText("Info"); + this.hide(); + this.setParentListener(); + } + + + private Label createNewInfo() throws ExecutionException, InvalidGdlSchemaException{ + Label lbl = new Label(); + this.addToContainerPanel(lbl); + this.setGdlStyle(lbl); + return lbl; + } + + + private void setParentListener(){ + // TODO: implement + } + + + public void setPosition(Widget parent) throws InvalidGdlSchemaException{ + int left = parent.getAbsoluteLeft(); + int top = parent.getAbsoluteTop() + parent.getOffsetHeight(); + DOM.setStyleAttribute(this.mainPanel.getElement(), "position", "absolute"); + DOM.setStyleAttribute(this.mainPanel.getElement(), "top", top + "px"); + DOM.setStyleAttribute(this.mainPanel.getElement(), "left", left + "px"); + this.hide(); + } + + + public void show() throws InvalidGdlSchemaException{ + DOM.setStyleAttribute(this.mainPanel.getElement(), "display", this.getDisplay().getCssName()); + } + + + public void hide(){ + DOM.setStyleAttribute(this.mainPanel.getElement(), "display", "none"); + } +}
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 27 08:46:22 2011 (r679) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/war/gdl_widgets/test.gdl.jtm Wed Jul 27 11:11:28 2011 (r680) @@ -74,6 +74,8 @@ {"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"}, {"type":"si:[gdl:width]", "value":"400px"}, {"type":"si:[gdl:height]", "value":"200px"}, {"type":"si:[gdl:border-style]", "value":"dashed"}, {"type":"si:[gdl:border-width]", "value":"1px"}, {"type":"si:[gdl:text-decoration]", "value":"line-through"},{"type":"si:[gdl:background-color]", "value":"lime"}]}, {"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:unit-1-reference]"], "instance_of":["si:[gdl:Reference]"], "occurrences":[{"type":"si:[gdl:id]", "value":"unit_1_reference_id"},{"type":"si:[gdl:float]", "value":"left"}]}, + {"subject_identifiers":["[gdl:Info]"]}, + {"subject_identifiers":["[doc:info-1]"], "instance_of":["si:[gdl:Info]"], "occurrences":[{"type":"si:[gdl:id]", "value":"info_1_id"}]}, {"subject_identifiers":["[doc:unit-1-text]"], "instance_of":["si:[gdl:Text]"], "occurrences":[{"type":"si:[gdl:id]", "value":"unit_1_text_id"}, {"type":"si:[gdl:clear]","value":"right"}]}, {"subject_identifiers":["[doc:unit-1-text-delete-button]"], "instance_of":["si:[gdl:Delete-Button]"], "occurrences":[{"type":"si:[gdl:id]","value":"unit_1_text_delete_button_id"}, {"type":"si:[gdl:font-size]", "value":"8px"}]}, {"subject_identifiers":["[doc:unit-1-text-create-button]"], "instance_of":["si:[gdl:Create-Button]"], "occurrences":[{"type":"si:[gdl:id]","value":"unit_1_text_create_button_id"}, {"type":"si:[gdl:font-size]", "value":"8px"}]}, @@ -210,5 +212,6 @@ {"type":"si:[gdl:contains]", "roles":[{"type":"si:[gdl:container]", "player":"si:[doc:unit-1-text]"},{"type":"si:[gdl:containee]", "player":"si:[doc:unit-1-text-create-button]"}]}, {"type":"si:[gdl:contains]", "roles":[{"type":"si:[gdl:container]", "player":"si:[doc:unit-1-text]"},{"type":"si:[gdl:containee]", "player":"si:[doc:unit-1-text-delete-button]"}]}, {"type":"si:[gdl:button-position]", "roles":[{"type":"si:[gdl:nth-element]", "player":"si:[doc:nth-elem-crt-btn]"},{"type":"si:[gdl:action-button]", "player":"si:[doc:unit-1-text-create-button]"}]}, - {"type":"si:[gdl:button-position]", "roles":[{"type":"si:[gdl:nth-element]", "player":"si:[doc:nth-elem-del-btn]"},{"type":"si:[gdl:action-button]", "player":"si:[doc:unit-1-text-delete-button]"}]} + {"type":"si:[gdl:button-position]", "roles":[{"type":"si:[gdl:nth-element]", "player":"si:[doc:nth-elem-del-btn]"},{"type":"si:[gdl:action-button]", "player":"si:[doc:unit-1-text-delete-button]"}]}, + {"type":"si:[gdl:contains]", "roles":[{"type":"si:[gdl:container]", "player":"si:[doc:unit-1-reference]"},{"type":"si:[gdl:containee]", "player":"si:[doc:info-1]"}]} ]} \ No newline at end of file