Author: lgiessmann Date: Fri Jul 8 23:26:35 2011 New Revision: 592
Log: gdl-frontend: Widgets: implemented some getter methods for the default values of the GdlReference object (cursor, color, text-decoration)
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/text/GdlReference.java
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 Fri Jul 8 13:39:15 2011 (r591) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/TestClass.java Fri Jul 8 23:26:35 2011 (r592) @@ -6,6 +6,7 @@ import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Topic; import us.isidor.gdl.anaToMia.Widgets.environment.Pattern; import us.isidor.gdl.anaToMia.Widgets.isidorus.LoadSchemaCallback; +import us.isidor.gdl.anaToMia.Widgets.text.GdlReference; import us.isidor.gdl.anaToMia.Widgets.text.GdlTitle; import us.isidor.gdl.anaToMia.Widgets.values.CursorValue; import com.google.gwt.core.client.EntryPoint; @@ -121,7 +122,7 @@ fsHover.addTheme(gdlHover); - GdlTitle tmp = new GdlTitle(tmpRepresentative); + GdlReference tmp = new GdlReference(tmpRepresentative); this.mainPanel.add(tmp); }catch(Exception e){ e.printStackTrace();
Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/text/GdlReference.java ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/text/GdlReference.java Fri Jul 8 13:39:15 2011 (r591) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/text/GdlReference.java Fri Jul 8 23:26:35 2011 (r592) @@ -11,9 +11,12 @@ import com.google.gwt.event.shared.HandlerRegistration; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.ui.Label; +import com.google.gwt.user.client.ui.Widget;
+import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Occurrence; import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Topic; import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.TopicMapsTypes; +import us.isidor.gdl.anaToMia.Widgets.base.GdlPsis; import us.isidor.gdl.anaToMia.Widgets.base.IGdlHasValue; import us.isidor.gdl.anaToMia.Widgets.environment.ActiveStyleHandler; import us.isidor.gdl.anaToMia.Widgets.environment.ExecutionException; @@ -21,6 +24,9 @@ import us.isidor.gdl.anaToMia.Widgets.environment.HoverStyleHandler; import us.isidor.gdl.anaToMia.Widgets.environment.InvalidGdlSchemaException; import us.isidor.gdl.anaToMia.Widgets.environment.Pair; +import us.isidor.gdl.anaToMia.Widgets.values.ColorValue; +import us.isidor.gdl.anaToMia.Widgets.values.CursorValue; +import us.isidor.gdl.anaToMia.Widgets.values.TextDecorationValue;
public class GdlReference extends GdlTextObject implements IGdlHasValue{ // some constructors @@ -30,12 +36,12 @@ public GdlReference(Topic tmRepresentative) throws InvalidGdlSchemaException, ExecutionException{ super(tmRepresentative); - // TODO: create a ListBox element for each TM-elem + // TODO: create a Reference element for each TM-elem this.createReference(); } - private Reference createReference() throws InvalidGdlSchemaException { + private Reference createReference() throws InvalidGdlSchemaException, ExecutionException { Reference reference = new Reference(); DOM.setElementAttribute(reference.getElement(), "id", this.getId() + "__GDL_" + this.subElements.size()); super.addToContainerPanel(reference); @@ -49,32 +55,105 @@ reference.addFocusHandler(fsHandler); reference.addBlurHandler(fsHandler); // TODO: register a click handler that handles the reference behavior + reference.setText("reference !!!"); // TODO: remove + super.setGdlStyle(reference); return reference; } - /* TODO: implement - The default values of particular occurrences are set as follows: - gdl:text-decoration: underline - gdl:color (unscoped or scoped by gdl:hover and/or gdl:focus): #0000FF - gdl:color (scoped by gdl:active): #FF0000 - gdl:cursor: pointer - */ + // returns a ColorValue instance that represents the text color of this element. + // If a styleClass is set, only the corresponding value of the scoped occurrence is returned + // or null. + public ColorValue getColor(String styleClass) throws InvalidGdlSchemaException { + Occurrence colorOcc = null; + if(styleClass != null){ + colorOcc = super.getNoneOrOneScopedOccurrence(GdlPsis.OccurrenceType.gdlColor, styleClass); + } else { + colorOcc = super.getNoneOrOneUnscopedOccurrence(GdlPsis.OccurrenceType.gdlColor); + } + + if(colorOcc == null && (styleClass == null || styleClass.equals(GdlPsis.Scope.gdlFocus) || styleClass.equals(GdlPsis.Scope.gdlHover))){ + return new ColorValue("#0000FF"); + }else if(colorOcc == null && styleClass.equals(GdlPsis.Scope.gdlActive)){ + return null; + }else { + return new ColorValue(colorOcc.getValue()); + } + } + // returns a CursorValue instance that represents the cursor of this element. + // If a styleClass is set, only the corresponding value of the scoped occurrence is returned + // null, null otherwise. If the styleClass is null and no occurrence was found, the default value for this + // property is returned. + @Override + public CursorValue getCursor(String styleClass) throws InvalidGdlSchemaException { + Occurrence cursorOcc = null; + if(styleClass != null){ + cursorOcc = getNoneOrOneScopedOccurrence(GdlPsis.OccurrenceType.gdlCursor, styleClass); + } else { + cursorOcc = getNoneOrOneUnscopedOccurrence(GdlPsis.OccurrenceType.gdlCursor); + } + + if(cursorOcc == null && styleClass != null){ + return null; + } else if(cursorOcc == null) { + return CursorValue.POINTER; + } else { + try{ + return CursorValue.valueOf(cursorOcc.getValue().toUpperCase().replace("-", "_")); + }catch(IllegalArgumentException e){ + String values = "auto, default, crosshair, pointer, move, n-resize, ne-resize," + + "nw-resize, e-resize, se-resize, s-resize, sw-resize, w-resize," + + "text, wait, help, or progress"; + throw new InvalidGdlSchemaException("cursor must be set to one of " + values + ", but is " + cursorOcc.getValue()); + } + } + } + + + // returns a TextDecoarionValue instance that represents the text-decoration of this element. + // If a styleClass is set, only the corresponding value of the scoped occurrence is returned + // or null. + @Override + public TextDecorationValue getTextDecoration(String styleClass) throws InvalidGdlSchemaException { + Occurrence decorationOcc = null; + if(styleClass != null){ + decorationOcc = super.getNoneOrOneScopedOccurrence(GdlPsis.OccurrenceType.gdlTextDecoration, styleClass); + } else { + decorationOcc = super.getNoneOrOneUnscopedOccurrence(GdlPsis.OccurrenceType.gdlTextDecoration); + } + + if(decorationOcc == null && styleClass != null){ + return null; + } else if(decorationOcc == null) { + return TextDecorationValue.UNDERLINE; + } else { + try{ + return TextDecorationValue.valueOf(decorationOcc.getValue().toUpperCase()); + }catch(IllegalArgumentException e){ + throw new InvalidGdlSchemaException("The occurrence " + GdlPsis.OccurrenceType.gdlTextDecoration + " must be set to one of "underline", "overline", "line-through", "blink" or "none", but is "" + decorationOcc.getValue() + """); + } + } + } @Override public ArrayList<String> getStringValue() { - // TODO Auto-generated method stub - return null; + ArrayList<String> result = new ArrayList<String>(); + for (Widget widget : this.subElements) { + result.add(((Reference)widget).getText()); + } + return result; } +
@Override public ArrayList<Pair<TopicMapsTypes, Object>> getTmValue() { // TODO Auto-generated method stub return null; } +
@Override public boolean validate() { @@ -83,10 +162,6 @@ } - - - - // this class wraps a Label that is used as protected class Reference extends Label implements HasFocusHandlers, HasBlurHandlers { public Reference(){