Author: lgiessmann Date: Thu Sep 15 04:26:17 2011 New Revision: 907
Log: gdl-frontend: Widgets: implemented a click handler that creates a GdlPanel when clicking on a psi
Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/isidorus/HashObjectUi.java branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/isidorus/PsiContainer.java
Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/isidorus/HashObjectUi.java ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/isidorus/HashObjectUi.java Thu Sep 15 01:58:58 2011 (r906) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/isidorus/HashObjectUi.java Thu Sep 15 04:26:17 2011 (r907) @@ -1,7 +1,17 @@ package us.isidor.gdl.anaToMia.Widgets.isidorus;
+import us.isidor.gdl.anaToMia.TmEngine.jtmsBasedEngine.JtmsTmEngine; +import us.isidor.gdl.anaToMia.Widgets.base.GdlPanel; +import us.isidor.gdl.anaToMia.Widgets.environment.ExecutionException; +import us.isidor.gdl.anaToMia.Widgets.environment.Pair; +import us.isidor.gdl.anaToMia.Widgets.environment.TopicIdentifierTypes; + import com.google.gwt.core.client.EntryPoint; +import com.google.gwt.dom.client.Element; +import com.google.gwt.dom.client.TextAreaElement; +import com.google.gwt.event.dom.client.ClickEvent; +import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.http.client.Request; import com.google.gwt.http.client.RequestBuilder; import com.google.gwt.http.client.RequestCallback; @@ -12,9 +22,11 @@ import com.google.gwt.json.client.JSONParser; import com.google.gwt.json.client.JSONString; import com.google.gwt.json.client.JSONValue; +import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.HorizontalPanel; +import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.RootPanel; import com.google.gwt.user.client.ui.VerticalPanel;
@@ -23,12 +35,19 @@ private HorizontalPanel mainPanel = new HorizontalPanel(); private VerticalPanel navigationPanel = new VerticalPanel(); private Button createNewButton = new Button("create new"); - private PsiContainer psiContainer = new PsiContainer(); - //private Image textGridLogo = new Image(IsidorusConstants.TEXTGRID_LOGO_URL); + private PsiContainer psiContainer = null; + private GdlPanel gdlPanel = null; @Override public void onModuleLoad() { + try{ + this.psiContainer = new PsiContainer(new PsiClickHandler()); + }catch(ExecutionException e){ + Window.alert("could not create web page, becuase: (" + e.getClass() + ") " + e.getMessage()); + this.resetPage(); + } + RootPanel.get("GWT_Content").add(this.mainPanel); mainPanel.add(this.navigationPanel); mainPanel.setBorderWidth(1); @@ -46,6 +65,7 @@ }catch(RequestException e){ e.printStackTrace(); Window.alert("could not request existing instances of http://textgrid.org/serviceregistry/model/types/Hash-Object, because(" + e.getClass() + "): " + e.getMessage()); + HashObjectUi.this.resetPage(); } } @@ -56,6 +76,42 @@ + private class PsiClickHandler implements ClickHandler { + @Override + public void onClick(ClickEvent event) { + Object obj = event.getSource(); + if(obj instanceof Label){ + Label source = (Label)obj; + try{ + GdlPanel.addClickHandler("hash_object_reset_button_id", new ResetClickHandler()); + if(HashObjectUi.this.gdlPanel != null) HashObjectUi.this.gdlPanel.removeFromParent(); + HashObjectUi.this.gdlPanel = new GdlPanel(new Pair<String, TopicIdentifierTypes>(source.getText(), TopicIdentifierTypes.SubjectIdentifier), null, 400, 400); + HashObjectUi.this.mainPanel.add(gdlPanel); + gdlPanel.setTmEngine(new JtmsTmEngine()); + gdlPanel.setLoadSchemaCallback(new LoadSchemaCallback()); + gdlPanel.setCommitCallback(new CommitCallback()); + gdlPanel.setDeleteCallback(new DeleteCallback()); + gdlPanel.loadSchema(); + }catch(Exception e){ + e.printStackTrace(); + Window.alert("could not instantiate the GdlPanel, because(" + e.getClass() + "): " + e.getMessage()); + HashObjectUi.this.resetPage(); + } + } + } + } + + + + private class ResetClickHandler implements ClickHandler { + @Override + public void onClick(ClickEvent event) { + Element elem = DOM.getElementById("hash_object_text_key_id__GDL_0"); + ((TextAreaElement)elem).setValue(""); + elem = DOM.getElementById("hash_object_text_value_id__GDL_0"); + ((TextAreaElement)elem).setValue(""); + } + }
Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/isidorus/PsiContainer.java ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/isidorus/PsiContainer.java Thu Sep 15 01:58:58 2011 (r906) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/isidorus/PsiContainer.java Thu Sep 15 04:26:17 2011 (r907) @@ -1,6 +1,10 @@ package us.isidor.gdl.anaToMia.Widgets.isidorus;
import java.util.ArrayList; + +import us.isidor.gdl.anaToMia.Widgets.environment.ExecutionException; + +import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.json.client.JSONString; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.Panel; @@ -11,9 +15,13 @@ public class PsiContainer { private ArrayList<Label> psiLabels = new ArrayList<Label>(); private VerticalPanel containerPanel = new VerticalPanel(); + private ClickHandler lblClickHandler = null; - public PsiContainer(){} + public PsiContainer(ClickHandler labelClikcHandler) throws ExecutionException{ + if(labelClikcHandler == null) throw new ExecutionException("labelClickHandler must not be null"); + this.lblClickHandler = labelClikcHandler; + } public void addPsi(String psi){ @@ -31,6 +39,7 @@ } } if(widgetIdx == this.containerPanel.getWidgetCount()) this.containerPanel.add(lbl); + if(this.lblClickHandler != null)lbl.addClickHandler(this.lblClickHandler); }