Author: lgiessmann Date: Wed Jul 27 05:56:40 2011 New Revision: 677
Log: gdl-frontend: Widgets: implemented the registration of ClickHandlers for buttons
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/GdlPanel.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/button/GdlActionButton.java branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/button/GdlCommitButton.java branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/button/GdlCreateButton.java branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/button/GdlDeleteButton.java branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/button/GdlValidateButton.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 04:07:48 2011 (r676) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/TODO.txt Wed Jul 27 05:56:40 2011 (r677) @@ -1,7 +1,4 @@ -* Fix GdlActionButton => Text-Attributes * Implement GdlInfo -* Implement GdlButton(s) * Implement TopicMaps data consumption * Implement TopicMaps data generation -* ImplementGdlVisibleObject => (de)registerButtonCallback -* Fix css-pseudo-class-handlers \ No newline at end of file +* 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/GdlPanel.java ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/GdlPanel.java Wed Jul 27 04:07:48 2011 (r676) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/GdlPanel.java Wed Jul 27 05:56:40 2011 (r677) @@ -15,7 +15,6 @@ import us.isidor.gdl.anaToMia.Widgets.environment.Pair; import us.isidor.gdl.anaToMia.Widgets.environment.TopicIdentifierTypes; import us.isidor.gdl.anaToMia.Widgets.view.GdlDefaultTopicView; - import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.AbsolutePanel; @@ -55,7 +54,7 @@ // contains all callbacks that are used as click handlers and the corresponding // html element id of the button element - private ArrayList<Pair<String, ClickHandler>> buttonCallbacks = new ArrayList<Pair<String, ClickHandler>>(); + private static ArrayList<Pair<String, ArrayList<ClickHandler>>> buttonCallbacks = new ArrayList<Pair<String,ArrayList<ClickHandler>>>();
// some constructors @@ -64,39 +63,48 @@ } - protected GdlPanel(Pair<String, TopicIdentifierTypes> topicToEdit, ArrayList<Pair<String, TopicIdentifierTypes>> topicToCreate, ArrayList<Pair<String, ClickHandler>> buttonCallbacks) throws ExecutionException{ + protected GdlPanel(Pair<String, TopicIdentifierTypes> topicToEdit, ArrayList<Pair<String, TopicIdentifierTypes>> topicToCreate) throws ExecutionException{ this(); if(topicToEdit != null)this.requestedTopicToEdit = topicToEdit; if(topicToCreate != null && topicToCreate.size() != 0)this.requestedTopicsToCreate = topicToCreate; if(this.requestedTopicsToCreate.size() != 0 && this.requestedTopicToEdit != null) throw new ExecutionException("only one container can be set, i.e. either topics to create or a topic to edit"); - - if(buttonCallbacks != null){ - this.buttonCallbacks = buttonCallbacks; - } } - public GdlPanel(Pair<String, TopicIdentifierTypes> topicToEdit, ArrayList<Pair<String, TopicIdentifierTypes>> topicToCreate, ArrayList<Pair<String, ClickHandler>> buttonCallbacks, int width, int height) throws ExecutionException{ - this(topicToEdit, topicToCreate, buttonCallbacks); + public GdlPanel(Pair<String, TopicIdentifierTypes> topicToEdit, ArrayList<Pair<String, TopicIdentifierTypes>> topicToCreate, int width, int height) throws ExecutionException{ + this(topicToEdit, topicToCreate); this.setPixelSize(width, height); } - public GdlPanel(Pair<String, TopicIdentifierTypes> topicToEdit, ArrayList<Pair<String, TopicIdentifierTypes>> topicToCreate, ArrayList<Pair<String, ClickHandler>> buttonCallbacks, String width, String height) throws ExecutionException{ - this(topicToEdit, topicToCreate, buttonCallbacks); + public GdlPanel(Pair<String, TopicIdentifierTypes> topicToEdit, ArrayList<Pair<String, TopicIdentifierTypes>> topicToCreate, String width, String height) throws ExecutionException{ + this(topicToEdit, topicToCreate); this.setSize(width, height); }
- public ClickHandler getclickHandler(String id){ - if(id == null) return null; - - for (Pair<String, ClickHandler> pair : this.buttonCallbacks) - if(pair.getFirst().equals(id)) return pair.getSecond(); + public static ArrayList<ClickHandler> getClickHandlers(String id){ + for (Pair<String, ArrayList<ClickHandler>> item : GdlPanel.buttonCallbacks) + if(item.getFirst().equals(id)) return item.getSecond(); + + return new ArrayList<ClickHandler>(); + } + + + public static void addClickHandler(String id, ClickHandler handler) throws ExecutionException { + if(id == null && handler == null) return; + if(id == null || handler == null) throw new ExecutionException("id and handler must be set, but are: " + id + ", " + handler); - return null; + ArrayList<ClickHandler> item = GdlPanel.getClickHandlers(id); + if(item.size() == 0){ + ArrayList<ClickHandler> handlers = new ArrayList<ClickHandler>(); + handlers.add(handler); + GdlPanel.buttonCallbacks.add(new Pair<String, ArrayList<ClickHandler>>(id, handlers)); + } else{ + item.add(handler); + } }
@@ -292,6 +300,5 @@ // remove all content from the main panel public void clear(){ this.mainPanel.clear(); - this.buttonCallbacks = new ArrayList<Pair<String,ClickHandler>>(); } }
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 04:07:48 2011 (r676) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/TestClass.java Wed Jul 27 05:56:40 2011 (r677) @@ -30,7 +30,13 @@ ArrayList<Pair<String, TopicIdentifierTypes>> requestedTopicsToCreate = new ArrayList<Pair<String,TopicIdentifierTypes>>(); 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)); - gdlPanel = new GdlPanel(null, requestedTopicsToCreate, null); + 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); 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 Wed Jul 27 04:07:48 2011 (r676) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/TmHelper.java Wed Jul 27 05:56:40 2011 (r677) @@ -18,7 +18,6 @@ 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/button/GdlActionButton.java ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/button/GdlActionButton.java Wed Jul 27 04:07:48 2011 (r676) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/button/GdlActionButton.java Wed Jul 27 05:56:40 2011 (r677) @@ -1,9 +1,12 @@ package us.isidor.gdl.anaToMia.Widgets.button;
+import java.util.ArrayList; +import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.ui.Button; import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Occurrence; import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Topic; +import us.isidor.gdl.anaToMia.Widgets.base.GdlPanel; import us.isidor.gdl.anaToMia.Widgets.base.GdlPsis; import us.isidor.gdl.anaToMia.Widgets.environment.ExecutionException; import us.isidor.gdl.anaToMia.Widgets.environment.InvalidGdlSchemaException; @@ -24,8 +27,10 @@ public GdlActionButton(Topic tmRepresentative) throws InvalidGdlSchemaException, ExecutionException{ super(tmRepresentative); + // TODO: set all tm values this.createButton().setText("Action-Button"); // TODO: remove set text + this.setClickHandlers(); } @@ -41,12 +46,19 @@ } + protected void setClickHandlers() throws InvalidGdlSchemaException{ + ArrayList<ClickHandler> handlers = GdlPanel.getClickHandlers(this.getId()); + if(handlers == null || this.subElements.size() == 0) return; + + for (ClickHandler handler : handlers) + ((Button)this.subElements.get(0)).addClickHandler(handler); + } + // sets the id property of this element by using the GWT DOM class @Override public void setId(String id){ - if(id != null && this.subElements.size() != 0){ + if(id != null && this.subElements.size() != 0) DOM.setElementProperty(this.subElements.get(0).getElement(), "id", id); - } }
Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/button/GdlCommitButton.java ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/button/GdlCommitButton.java Wed Jul 27 04:07:48 2011 (r676) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/button/GdlCommitButton.java Wed Jul 27 05:56:40 2011 (r677) @@ -3,6 +3,7 @@ import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Topic; import us.isidor.gdl.anaToMia.Widgets.environment.ExecutionException; import us.isidor.gdl.anaToMia.Widgets.environment.InvalidGdlSchemaException; +import com.google.gwt.user.client.ui.Button;
public class GdlCommitButton extends GdlActionButton { // TODO: implement @@ -14,7 +15,6 @@ public GdlCommitButton(Topic tmRepresentative) throws InvalidGdlSchemaException, ExecutionException{ super(tmRepresentative); - // TODO: set all tm values - this.createButton().setText("commit"); + ((Button)this.subElements.get(0)).setText("commit"); } }
Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/button/GdlCreateButton.java ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/button/GdlCreateButton.java Wed Jul 27 04:07:48 2011 (r676) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/button/GdlCreateButton.java Wed Jul 27 05:56:40 2011 (r677) @@ -3,6 +3,7 @@ import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Topic; import us.isidor.gdl.anaToMia.Widgets.environment.ExecutionException; import us.isidor.gdl.anaToMia.Widgets.environment.InvalidGdlSchemaException; +import com.google.gwt.user.client.ui.Button;
public class GdlCreateButton extends GdlActionButton { // TODO: implement @@ -14,7 +15,6 @@ public GdlCreateButton(Topic tmRepresentative) throws InvalidGdlSchemaException, ExecutionException{ super(tmRepresentative); - // TODO: set all tm values - this.createButton().setText("create"); + ((Button)this.subElements.get(0)).setText("create"); } }
Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/button/GdlDeleteButton.java ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/button/GdlDeleteButton.java Wed Jul 27 04:07:48 2011 (r676) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/button/GdlDeleteButton.java Wed Jul 27 05:56:40 2011 (r677) @@ -1,6 +1,8 @@ package us.isidor.gdl.anaToMia.Widgets.button;
+import com.google.gwt.user.client.ui.Button; + import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Topic; import us.isidor.gdl.anaToMia.Widgets.environment.ExecutionException; import us.isidor.gdl.anaToMia.Widgets.environment.InvalidGdlSchemaException; @@ -15,7 +17,6 @@ public GdlDeleteButton(Topic tmRepresentative) throws InvalidGdlSchemaException, ExecutionException{ super(tmRepresentative); - // TODO: set all tm values - this.createButton().setText("delete"); + ((Button)this.subElements.get(0)).setText("delete"); } }
Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/button/GdlValidateButton.java ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/button/GdlValidateButton.java Wed Jul 27 04:07:48 2011 (r676) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/button/GdlValidateButton.java Wed Jul 27 05:56:40 2011 (r677) @@ -1,5 +1,7 @@ package us.isidor.gdl.anaToMia.Widgets.button;
+import com.google.gwt.user.client.ui.Button; + import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Topic; import us.isidor.gdl.anaToMia.Widgets.environment.ExecutionException; import us.isidor.gdl.anaToMia.Widgets.environment.InvalidGdlSchemaException; @@ -14,7 +16,6 @@ public GdlValidateButton(Topic tmRepresentative) throws InvalidGdlSchemaException, ExecutionException{ super(tmRepresentative); - // TODO: set all tm values - this.createButton().setText("validate"); + ((Button)this.subElements.get(0)).setText("validate"); } }
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 04:07:48 2011 (r676) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/war/gdl_widgets/test.gdl.jtm Wed Jul 27 05:56:40 2011 (r677) @@ -75,8 +75,8 @@ {"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":["[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"}, {"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"}, {"type":"si:[gdl:font-size]", "value":"8px"}]}, + {"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"}]}, {"subject_identifiers":["[doc:pos-of-unit-1-reference]"], "instance_of":["si:[gdl:Position]"]}, {"subject_identifiers":["[doc:pos-of-unit-1-radio-button]"], "instance_of":["si:[gdl:Position]"]}, {"subject_identifiers":["[doc:pos-of-unit-1-check-box]"], "instance_of":["si:[gdl:Position]"]},