Author: lgiessmann Date: Wed Jul 6 11:09:04 2011 New Revision: 569
Log: gdl-frontend: Widgets: changed the behavior of registering the event handlers for the realisation of the css pseudo classes active, hover and focus
Deleted: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/environment/CssStyleHandler.java 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/TestClass.java branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/environment/ActiveStyleHandler.java branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/environment/FocusStyleHandler.java branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/environment/HoverStyleHandler.java branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/text/GdlText.java branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/views/GdlCreatorAssociationView.java branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/views/GdlDefaultCreatorTopicView.java branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/views/GdlEditorAssociationView.java branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/views/GdlSpecialCreatorTopicView.java branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/views/GdlSpecialEditorTopicView.java
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 6 07:41:45 2011 (r568) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/GdlVisibleObject.java Wed Jul 6 11:09:04 2011 (r569) @@ -4,9 +4,13 @@ import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Occurrence; import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Topic; import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.TopicMap; +import us.isidor.gdl.anaToMia.Widgets.environment.ActiveStyleHandler; import us.isidor.gdl.anaToMia.Widgets.environment.ExecutionException; +import us.isidor.gdl.anaToMia.Widgets.environment.FocusStyleHandler; +import us.isidor.gdl.anaToMia.Widgets.environment.HoverStyleHandler; 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.values.AutoNumUnitValue; import us.isidor.gdl.anaToMia.Widgets.values.AutoNumValue; import us.isidor.gdl.anaToMia.Widgets.values.BorderStyleValue; @@ -21,8 +25,11 @@ import com.google.gwt.dom.client.Style.Float; import com.google.gwt.dom.client.Style.Overflow; import com.google.gwt.dom.client.Style.VerticalAlign; +import com.google.gwt.event.dom.client.BlurEvent; import com.google.gwt.event.dom.client.BlurHandler; import com.google.gwt.event.dom.client.ClickHandler; +import com.google.gwt.event.dom.client.DomEvent; +import com.google.gwt.event.dom.client.FocusEvent; import com.google.gwt.event.dom.client.FocusHandler; import com.google.gwt.event.dom.client.HasBlurHandlers; import com.google.gwt.event.dom.client.HasClickHandlers; @@ -31,9 +38,13 @@ import com.google.gwt.event.dom.client.HasMouseOutHandlers; import com.google.gwt.event.dom.client.HasMouseOverHandlers; import com.google.gwt.event.dom.client.HasMouseUpHandlers; +import com.google.gwt.event.dom.client.MouseDownEvent; import com.google.gwt.event.dom.client.MouseDownHandler; +import com.google.gwt.event.dom.client.MouseOutEvent; import com.google.gwt.event.dom.client.MouseOutHandler; +import com.google.gwt.event.dom.client.MouseOverEvent; import com.google.gwt.event.dom.client.MouseOverHandler; +import com.google.gwt.event.dom.client.MouseUpEvent; import com.google.gwt.event.dom.client.MouseUpHandler; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.ui.AbsolutePanel; @@ -45,7 +56,10 @@ protected AbsolutePanel mainPanel = new AbsolutePanel(); protected Topic tmRepresentative = null; protected TopicMap tm = null; - + protected ArrayList<Pair<String, String>> activeCssNamesAndStyles = new ArrayList<Pair<String,String>>(); + protected ArrayList<Pair<String, String>> focusCssNamesAndStyles = new ArrayList<Pair<String,String>>(); + protected ArrayList<Pair<String, String>> hoverCssNamesAndStyles = new ArrayList<Pair<String,String>>(); +
// some constructors protected GdlVisibleObject() { @@ -229,8 +243,6 @@ } - - // returns a VerticalAlign instance of a gdl:vertical-align occurrence // or the default value for this property if no gdl:vertical-align occurrence // is available. The styleClass attribute is used as scope for expressing @@ -1322,14 +1334,11 @@ if(styleClass == null){ DOM.setStyleAttribute(this.getElement(), cssProperty, cssValue); } else if(styleClass.equals(GdlPsis.Scope.gdlActive)){ - //this.activeStyleHandler.addCssStyle(new Pair<String, String>(cssProperty, cssValue)); - // Ignore is only set in the inheriting classes + this.activeCssNamesAndStyles.add(new Pair<String, String>(cssProperty, cssValue)); } else if(styleClass.equals(GdlPsis.Scope.gdlFocus)){ - //this.focusStyleHandler.addCssStyle(new Pair<String, String>(cssProperty, cssValue)); - // Ignore is only set in the inheriting classes + this.focusCssNamesAndStyles.add(new Pair<String, String>(cssProperty, cssValue)); } else if (styleClass.equals(GdlPsis.Scope.gdlHover)){ - //this.hoverStyleHandler.addCssStyle(new Pair<String, String>(cssProperty, cssValue)); - // Ignore is only set in the inheriting classes + this.hoverCssNamesAndStyles.add(new Pair<String, String>(cssProperty, cssValue)); } else { String values = GdlPsis.Scope.gdlActive + ", " + GdlPsis.Scope.gdlFocus + ", " + GdlPsis.Scope.gdlHover; throw new InvalidGdlSchemaException("GDL defines only the style classes " + values + ", but found " + styleClass); @@ -1378,5 +1387,29 @@ // registers a blur handler to all sub-elements of this element @Override - public abstract MultipleHandlerRegistration addBlurHandler(BlurHandler handler); + public abstract MultipleHandlerRegistration addBlurHandler(BlurHandler handler); + + + // shall be called, if a sub-element of this element is hovered + public abstract void onHoverStart(@SuppressWarnings("rawtypes") DomEvent event, HoverStyleHandler handler); + + + // shall be called, if a sub-element of this element is hovered + public abstract void onHoverEnd(@SuppressWarnings("rawtypes") DomEvent event, HoverStyleHandler handler); + + + // shall be called, if a sub-element of this element is focused + public abstract void onFocusStart(@SuppressWarnings("rawtypes") DomEvent event, FocusStyleHandler handler); + + + // shall be called, if a sub-element of this element is focused + public abstract void onFocusEnd(@SuppressWarnings("rawtypes") DomEvent event, FocusStyleHandler handler); + + + // shall be called, if a sub-element of this element is focused + public abstract void onActiveStart(@SuppressWarnings("rawtypes") DomEvent event, ActiveStyleHandler handler); + + + // shall be called, if a sub-element of this element is focused + public abstract void onActiveEnd(@SuppressWarnings("rawtypes") DomEvent event, ActiveStyleHandler handler); }
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 6 07:41:45 2011 (r568) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/TestClass.java Wed Jul 6 11:09:04 2011 (r569) @@ -104,14 +104,14 @@ tmpRepresentative.createOccurrence(gdlOverflow, "hidden", null); tmpRepresentative.createOccurrence(gdlFontSize, "15pt", null); tmpRepresentative.createOccurrence(gdlTextDecoration, "underline", null); - //Occurrence bgcHover = tmpRepresentative.createOccurrence(gdlBackgroundColor, "green", null); - //bgcHover.addTheme(gdlHover); - //Occurrence bgcActive = tmpRepresentative.createOccurrence(gdlBackgroundColor, "purple", null); - //bgcActive.addTheme(gdlActive); - //Occurrence bgcFocus = tmpRepresentative.createOccurrence(gdlBackgroundColor, "silver", null); - //bgcFocus.addTheme(gdlFocus); - //Occurrence fsHover = tmpRepresentative.createOccurrence(gdlFontSize, "25pt", null); - //fsHover.addTheme(gdlHover); + Occurrence bgcHover = tmpRepresentative.createOccurrence(gdlBackgroundColor, "green", null); + bgcHover.addTheme(gdlHover); + Occurrence bgcActive = tmpRepresentative.createOccurrence(gdlBackgroundColor, "purple", null); + bgcActive.addTheme(gdlActive); + Occurrence bgcFocus = tmpRepresentative.createOccurrence(gdlBackgroundColor, "silver", null); + bgcFocus.addTheme(gdlFocus); + Occurrence fsHover = tmpRepresentative.createOccurrence(gdlFontSize, "25pt", null); + fsHover.addTheme(gdlHover);
Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/environment/ActiveStyleHandler.java ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/environment/ActiveStyleHandler.java Wed Jul 6 07:41:45 2011 (r568) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/environment/ActiveStyleHandler.java Wed Jul 6 11:09:04 2011 (r569) @@ -1,28 +1,30 @@ package us.isidor.gdl.anaToMia.Widgets.environment;
import us.isidor.gdl.anaToMia.Widgets.base.GdlVisibleObject; - import com.google.gwt.event.dom.client.MouseDownEvent; import com.google.gwt.event.dom.client.MouseDownHandler; import com.google.gwt.event.dom.client.MouseUpEvent; import com.google.gwt.event.dom.client.MouseUpHandler; +import com.google.gwt.user.client.ui.Widget;
-public class ActiveStyleHandler extends CssStyleHandler implements MouseDownHandler, MouseUpHandler{ - public ActiveStyleHandler() { - super(); - } + + +public class ActiveStyleHandler implements MouseDownHandler, MouseUpHandler{ + GdlVisibleObject widget = null; + public ActiveStyleHandler(GdlVisibleObject widget) { + this.widget = widget; + } +
@Override public void onMouseUp(MouseUpEvent event) { - GdlVisibleObject widget = (GdlVisibleObject)event.getSource(); - super.unsetStyles(widget); + widget.onActiveEnd(event, this); }
@Override public void onMouseDown(MouseDownEvent event) { - GdlVisibleObject widget = (GdlVisibleObject)event.getSource(); - super.setStyles(widget); + widget.onActiveStart(event, this); } }
Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/environment/FocusStyleHandler.java ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/environment/FocusStyleHandler.java Wed Jul 6 07:41:45 2011 (r568) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/environment/FocusStyleHandler.java Wed Jul 6 11:09:04 2011 (r569) @@ -1,29 +1,29 @@ package us.isidor.gdl.anaToMia.Widgets.environment;
import us.isidor.gdl.anaToMia.Widgets.base.GdlVisibleObject; -import us.isidor.gdl.anaToMia.Widgets.environment.CssStyleHandler; import com.google.gwt.event.dom.client.BlurEvent; import com.google.gwt.event.dom.client.BlurHandler; import com.google.gwt.event.dom.client.FocusEvent; import com.google.gwt.event.dom.client.FocusHandler; +import com.google.gwt.user.client.ui.Widget;
-public class FocusStyleHandler extends CssStyleHandler implements FocusHandler, BlurHandler{ +public class FocusStyleHandler implements FocusHandler, BlurHandler{ + GdlVisibleObject widget = null; + // this class is used to set the style of focused elements - public FocusStyleHandler() { - super(); + public FocusStyleHandler(GdlVisibleObject widget) { + this.widget = widget; }
- + @Override public void onFocus(FocusEvent event) { - GdlVisibleObject widget = (GdlVisibleObject)event.getSource(); - super.setStyles(widget);; + widget.onFocusStart(event, this); }
@Override public void onBlur(BlurEvent event) { - GdlVisibleObject widget = (GdlVisibleObject)event.getSource(); - super.unsetStyles(widget); + widget.onFocusEnd(event, this); } }
Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/environment/HoverStyleHandler.java ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/environment/HoverStyleHandler.java Wed Jul 6 07:41:45 2011 (r568) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/environment/HoverStyleHandler.java Wed Jul 6 11:09:04 2011 (r569) @@ -1,28 +1,30 @@ package us.isidor.gdl.anaToMia.Widgets.environment;
-import us.isidor.gdl.anaToMia.Widgets.base.GdlVisibleObject;
+import us.isidor.gdl.anaToMia.Widgets.base.GdlVisibleObject; import com.google.gwt.event.dom.client.MouseOutEvent; import com.google.gwt.event.dom.client.MouseOutHandler; import com.google.gwt.event.dom.client.MouseOverEvent; import com.google.gwt.event.dom.client.MouseOverHandler;
-public class HoverStyleHandler extends CssStyleHandler implements MouseOverHandler, MouseOutHandler{ - public HoverStyleHandler() { - super(); - } + +public class HoverStyleHandler implements MouseOverHandler, MouseOutHandler{ + GdlVisibleObject widget = null; + public HoverStyleHandler(GdlVisibleObject widget){ + this.widget = widget; + } + + @Override public void onMouseOut(MouseOutEvent event) { - GdlVisibleObject widget = (GdlVisibleObject)event.getSource(); - super.unsetStyles(widget); + widget.onHoverEnd(event, this); }
@Override public void onMouseOver(MouseOverEvent event) { - GdlVisibleObject widget = (GdlVisibleObject)event.getSource(); - super.setStyles(widget); + widget.onHoverStart(event, this); } }
Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/text/GdlText.java ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/text/GdlText.java Wed Jul 6 07:41:45 2011 (r568) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/text/GdlText.java Wed Jul 6 11:09:04 2011 (r569) @@ -4,17 +4,26 @@ import com.google.gwt.dom.client.Style.FontStyle; import com.google.gwt.dom.client.Style.Overflow; import com.google.gwt.dom.client.Style.VerticalAlign; +import com.google.gwt.event.dom.client.BlurEvent; import com.google.gwt.event.dom.client.BlurHandler; import com.google.gwt.event.dom.client.ClickHandler; +import com.google.gwt.event.dom.client.DomEvent; +import com.google.gwt.event.dom.client.FocusEvent; import com.google.gwt.event.dom.client.FocusHandler; import com.google.gwt.event.dom.client.KeyPressEvent; import com.google.gwt.event.dom.client.KeyPressHandler; +import com.google.gwt.event.dom.client.MouseDownEvent; import com.google.gwt.event.dom.client.MouseDownHandler; +import com.google.gwt.event.dom.client.MouseOutEvent; import com.google.gwt.event.dom.client.MouseOutHandler; +import com.google.gwt.event.dom.client.MouseOverEvent; import com.google.gwt.event.dom.client.MouseOverHandler; +import com.google.gwt.event.dom.client.MouseUpEvent; import com.google.gwt.event.dom.client.MouseUpHandler; +import com.google.gwt.event.shared.EventHandler; import com.google.gwt.event.shared.HandlerRegistration; import com.google.gwt.user.client.DOM; +import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.TextArea; import com.google.gwt.user.client.ui.Widget; import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Occurrence; @@ -22,7 +31,10 @@ 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; +import us.isidor.gdl.anaToMia.Widgets.environment.FocusStyleHandler; +import us.isidor.gdl.anaToMia.Widgets.environment.HoverStyleHandler; import us.isidor.gdl.anaToMia.Widgets.environment.InvalidGdlSchemaException; import us.isidor.gdl.anaToMia.Widgets.environment.MultipleHandlerRegistration; import us.isidor.gdl.anaToMia.Widgets.environment.Pair; @@ -48,9 +60,7 @@ protected ArrayList<TextArea> textElements = new ArrayList<TextArea>(); protected ArrayList<PasswordKeyPressHandler> passwordKeyPressHandler = null; protected ArrayList<HandlerRegistration> passwordKeyPressRegistrations = null; - // TODO: protected ArrayList<Pair<TextArea, ActiveStyleHandler>> activeStyleHandler = new ArrayList<Pair<TextArea,ActiveStyleHandler>>(); - // TODO: protected ArrayList<Pair<TextArea, FocusStyleHandler>> focusStyleHandler = new ArrayList<Pair<TextArea,FocusStyleHandler>>(); - // TODO: protected ArrayList<Pair<TextArea, HoverStyleHandler>> hoverStyleHandler = new ArrayList<Pair<TextArea,HoverStyleHandler>>(); + protected ArrayList<Pair<TextArea, ArrayList<EventHandler>>> eventHandlers = new ArrayList<Pair<TextArea, ArrayList<EventHandler>>>(); // some constructors @@ -71,9 +81,18 @@ protected TextArea createNewTextArea() throws InvalidGdlSchemaException, ExecutionException { TextArea elem = new TextArea(); DOM.setElementAttribute(elem.getElement(), "id", this.getId() + "__GDL_" + this.textElements.size()); + this.setGdlStyle((Widget)elem); + ActiveStyleHandler asHandler = new ActiveStyleHandler(this); + FocusStyleHandler fsHandler = new FocusStyleHandler(this); + HoverStyleHandler hsHandler = new HoverStyleHandler(this); + elem.addMouseDownHandler(asHandler); + elem.addMouseUpHandler(asHandler); + elem.addMouseOverHandler(hsHandler); + elem.addMouseOutHandler(hsHandler); + elem.addFocusHandler(fsHandler); + elem.addBlurHandler(fsHandler); this.textElements.add(elem); super.mainPanel.add(elem); - this.setGdlStyle((Widget)elem); this.adjustSize(); return elem; } @@ -81,27 +100,12 @@ // removes the passed element and all its handlers from the outer element protected void removeTextArea(TextArea elem){ - // TODO: implement - /*for (Pair<TextArea, ActiveStyleHandler> item : this.activeStyleHandler) { - if(item.getFirst().equals(elem)){ - this.activeStyleHandler.remove(item); - break; - } - } - for (Pair<TextArea, FocusStyleHandler> item : this.focusStyleHandler) { + for (Pair<TextArea, ArrayList<EventHandler>> item : this.eventHandlers) { if(item.getFirst().equals(elem)){ - this.focusStyleHandler.remove(item); + this.eventHandlers.remove(item); break; } } - for (Pair<TextArea, HoverStyleHandler> item : this.hoverStyleHandler) { - if(item.getFirst().equals(elem)){ - this.hoverStyleHandler.remove(item); - break; - } - } - */ - this.textElements.remove(elem); elem.removeFromParent(); this.adjustSize(); @@ -532,31 +536,11 @@ if(styleClass == null){ DOM.setStyleAttribute(elem.getElement(), cssProperty, cssValue); } else if(styleClass.equals(GdlPsis.Scope.gdlActive)){ - /* TODO: implement - if(item.getFirst().equals(elem)){ - item.getSecond().addCssStyle(new Pair<String, String>(cssProperty, cssValue)); - break; - } - } - */ + super.activeCssNamesAndStyles.add(new Pair<String, String>(cssProperty, cssValue)); } else if(styleClass.equals(GdlPsis.Scope.gdlFocus)){ - /* TODO: implement - for (Pair<TextArea, FocusStyleHandler> item : this.focusStyleHandler) { - if(item.getFirst().equals(elem)){ - item.getSecond().addCssStyle(new Pair<String, String>(cssProperty, cssValue)); - break; - } - } - */ + super.focusCssNamesAndStyles.add(new Pair<String, String>(cssProperty, cssValue)); } else if (styleClass.equals(GdlPsis.Scope.gdlHover)){ - /* TODO: implement - for (Pair<TextArea, HoverStyleHandler> item : this.hoverStyleHandler) { - if(item.getFirst().equals(elem)){ - item.getSecond().addCssStyle(new Pair<String, String>(cssProperty, cssValue)); - break; - } - } - */ + super.hoverCssNamesAndStyles.add(new Pair<String, String>(cssProperty, cssValue)); } else { String values = GdlPsis.Scope.gdlActive + ", " + GdlPsis.Scope.gdlFocus + ", " + GdlPsis.Scope.gdlHover; throw new InvalidGdlSchemaException("GDL defines only the style classes " + values + ", but found " + styleClass); @@ -1142,6 +1126,138 @@ // TODO: implement return false; } + + + // adds the passed handler to the list eventHandlers + private void addEventHandler(TextArea elem, EventHandler handler){ + if(handler == null || elem == null) return; + + for (Pair<TextArea, ArrayList<EventHandler>> item : this.eventHandlers) { + if(item.getFirst().equals(elem)){ + item.getSecond().add(handler); + return; + } + } + ArrayList<EventHandler> newHandlerList = new ArrayList<EventHandler>(); + newHandlerList.add(handler); + this.eventHandlers.add(new Pair<TextArea, ArrayList<EventHandler>>(elem, newHandlerList)); + } + + + // remove the passed handler of the list eventHandlers + private void removeEventHandler(TextArea elem, EventHandler handler){ + for (Pair<TextArea, ArrayList<EventHandler>> item : this.eventHandlers) { + if(item.getFirst().equals(elem)){ + for (EventHandler handlerItem : item.getSecond()) { + if(handlerItem.equals(handler)){ + item.getSecond().remove(handlerItem); + return; + } + } + } + } + } + + + // returns the last handler bound to the passed element. + private EventHandler getLastHandler(TextArea elem){ + for (Pair<TextArea, ArrayList<EventHandler>> item : this.eventHandlers) { + if(item.getFirst().equals(elem)){ + int idx = item.getSecond().size() - 1; + if(idx >= 0){ + return item.getSecond().get(idx); + } + } + } + + return null; + } + + + // some handler for applying the css style bound to the pseudo classes hover, active and focus + @Override + public void onHoverStart(@SuppressWarnings("rawtypes") DomEvent event, HoverStyleHandler handler) { + TextArea source = (TextArea)event.getSource(); + this.addEventHandler(source, handler); + for (Pair<String, String> elem : this.hoverCssNamesAndStyles) { + DOM.setStyleAttribute(source.getElement(), elem.getFirst(), elem.getSecond()); + } + } + + + @Override + public void onHoverEnd(@SuppressWarnings("rawtypes") DomEvent event, HoverStyleHandler handler) { + try{ + TextArea source = (TextArea)event.getSource(); + this.removeEventHandler(source, handler); + EventHandler lastHandler = this.getLastHandler(source); + if(lastHandler == null){ + this.setGdlStyle(source); + }else { + if(lastHandler.getClass().equals(ActiveStyleHandler.class)) this.onActiveStart(event, null); + else this.onFocusStart(null, null); + } + }catch(Exception e){ + Window.alert("could not apply the default CSS style >> " + e.getClass() + " >> " + e.getMessage()); + e.printStackTrace(); + } + } + + + @Override + public void onFocusStart(@SuppressWarnings("rawtypes") DomEvent event, FocusStyleHandler handler) { + TextArea source = (TextArea)event.getSource(); + this.addEventHandler(source, handler); + for (Pair<String, String> elem : this.focusCssNamesAndStyles) { + DOM.setStyleAttribute(source.getElement(), elem.getFirst(), elem.getSecond()); + } + } + + + @Override + public void onFocusEnd(@SuppressWarnings("rawtypes") DomEvent event, FocusStyleHandler handler) { + try{ + TextArea source = (TextArea)event.getSource(); + this.removeEventHandler(source, handler); + EventHandler lastHandler = this.getLastHandler(source); + if(lastHandler == null){ + this.setGdlStyle(source); + }else { + if(lastHandler.getClass().equals(ActiveStyleHandler.class)) this.onActiveStart(event, null); + else this.onHoverStart(null, null); + } + }catch(Exception e){ + Window.alert("could not apply the default CSS style >> " + e.getClass() + " >> " + e.getMessage()); + } + } + + + @Override + public void onActiveStart(@SuppressWarnings("rawtypes") DomEvent event, ActiveStyleHandler handler) { + TextArea source = (TextArea)event.getSource(); + this.addEventHandler(source, handler); + for (Pair<String, String> elem : this.activeCssNamesAndStyles) { + DOM.setStyleAttribute(source.getElement(), elem.getFirst(), elem.getSecond()); + } + } + + + @Override + public void onActiveEnd(@SuppressWarnings("rawtypes") DomEvent event, ActiveStyleHandler handler) { + try{ + TextArea source = (TextArea)event.getSource(); + this.removeEventHandler(source, handler); + EventHandler lastHandler = this.getLastHandler(source); + if(lastHandler == null){ + this.setGdlStyle(source); + }else { + if(lastHandler.getClass().equals(HoverStyleHandler.class)) this.onHoverStart(event, null); + else this.onFocusStart(null, null); + } + }catch(Exception e){ + Window.alert("could not apply the default CSS style >> " + e.getClass() + " >> " + e.getMessage()); + } + } // this class catches all keypress events and transforms the visible @@ -1163,5 +1279,4 @@ return this.realValue; } } - }
Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/views/GdlCreatorAssociationView.java ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/views/GdlCreatorAssociationView.java Wed Jul 6 07:41:45 2011 (r568) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/views/GdlCreatorAssociationView.java Wed Jul 6 11:09:04 2011 (r569) @@ -2,7 +2,14 @@
import com.google.gwt.dom.client.Style.Float; import com.google.gwt.dom.client.Style.Overflow; +import com.google.gwt.event.dom.client.BlurEvent; import com.google.gwt.event.dom.client.ClickHandler; +import com.google.gwt.event.dom.client.DomEvent; +import com.google.gwt.event.dom.client.FocusEvent; +import com.google.gwt.event.dom.client.MouseDownEvent; +import com.google.gwt.event.dom.client.MouseOutEvent; +import com.google.gwt.event.dom.client.MouseOverEvent; +import com.google.gwt.event.dom.client.MouseUpEvent; import com.google.gwt.user.client.ui.Widget;
import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Association; @@ -10,7 +17,10 @@ import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Topic; import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.TopicMap; import us.isidor.gdl.anaToMia.Widgets.base.GdlVisibleObject; +import us.isidor.gdl.anaToMia.Widgets.environment.ActiveStyleHandler; import us.isidor.gdl.anaToMia.Widgets.environment.ExecutionException; +import us.isidor.gdl.anaToMia.Widgets.environment.FocusStyleHandler; +import us.isidor.gdl.anaToMia.Widgets.environment.HoverStyleHandler; import us.isidor.gdl.anaToMia.Widgets.environment.InvalidGdlSchemaException; import us.isidor.gdl.anaToMia.Widgets.values.AbsoluteNumValue; import us.isidor.gdl.anaToMia.Widgets.values.AutoNumUnitValue; @@ -379,4 +389,41 @@ protected void adjustSize() { // ignore this method, since all instances of gdl:View have a static size } + + @Override + public void onHoverStart(DomEvent event, HoverStyleHandler handler) { + // TODO Auto-generated method stub + + } + + @Override + public void onHoverEnd(DomEvent event, HoverStyleHandler handler) { + // TODO Auto-generated method stub + + } + + @Override + public void onFocusStart(DomEvent event, FocusStyleHandler handler) { + // TODO Auto-generated method stub + + } + + @Override + public void onFocusEnd(DomEvent event, FocusStyleHandler handler) { + // TODO Auto-generated method stub + + } + + @Override + public void onActiveStart(DomEvent event, ActiveStyleHandler handler) { + // TODO Auto-generated method stub + + } + + @Override + public void onActiveEnd(DomEvent event, ActiveStyleHandler handler) { + // TODO Auto-generated method stub + + } + }
Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/views/GdlDefaultCreatorTopicView.java ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/views/GdlDefaultCreatorTopicView.java Wed Jul 6 07:41:45 2011 (r568) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/views/GdlDefaultCreatorTopicView.java Wed Jul 6 11:09:04 2011 (r569) @@ -1,11 +1,21 @@ package us.isidor.gdl.anaToMia.Widgets.views;
+import com.google.gwt.event.dom.client.BlurEvent; import com.google.gwt.event.dom.client.ClickHandler; +import com.google.gwt.event.dom.client.DomEvent; +import com.google.gwt.event.dom.client.FocusEvent; +import com.google.gwt.event.dom.client.MouseDownEvent; +import com.google.gwt.event.dom.client.MouseOutEvent; +import com.google.gwt.event.dom.client.MouseOverEvent; +import com.google.gwt.event.dom.client.MouseUpEvent; import com.google.gwt.user.client.ui.Widget; import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Topic; import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.TopicMap; import us.isidor.gdl.anaToMia.Widgets.base.GdlVisibleObject; +import us.isidor.gdl.anaToMia.Widgets.environment.ActiveStyleHandler; import us.isidor.gdl.anaToMia.Widgets.environment.ExecutionException; +import us.isidor.gdl.anaToMia.Widgets.environment.FocusStyleHandler; +import us.isidor.gdl.anaToMia.Widgets.environment.HoverStyleHandler; import us.isidor.gdl.anaToMia.Widgets.environment.InvalidGdlSchemaException; import us.isidor.gdl.anaToMia.Widgets.values.AbsoluteNumValue; import us.isidor.gdl.anaToMia.Widgets.values.AutoNumUnitValue; @@ -415,4 +425,48 @@ protected void adjustSize() { // ignore this method, since all instances of gdl:View have a static size } + + + @Override + public void onHoverStart(DomEvent event, HoverStyleHandler handler) { + // TODO Auto-generated method stub + + } + + + @Override + public void onHoverEnd(DomEvent event, HoverStyleHandler handler) { + // TODO Auto-generated method stub + + } + + + @Override + public void onFocusStart(DomEvent event, FocusStyleHandler handler) { + // TODO Auto-generated method stub + + } + + + @Override + public void onFocusEnd(DomEvent event, FocusStyleHandler handler) { + // TODO Auto-generated method stub + + } + + + @Override + public void onActiveStart(DomEvent event, ActiveStyleHandler handler) { + // TODO Auto-generated method stub + + } + + + @Override + public void onActiveEnd(DomEvent event, ActiveStyleHandler handler) { + // TODO Auto-generated method stub + + } + + }
Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/views/GdlEditorAssociationView.java ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/views/GdlEditorAssociationView.java Wed Jul 6 07:41:45 2011 (r568) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/views/GdlEditorAssociationView.java Wed Jul 6 11:09:04 2011 (r569) @@ -2,7 +2,14 @@
import com.google.gwt.dom.client.Style.Float; import com.google.gwt.dom.client.Style.Overflow; +import com.google.gwt.event.dom.client.BlurEvent; import com.google.gwt.event.dom.client.ClickHandler; +import com.google.gwt.event.dom.client.DomEvent; +import com.google.gwt.event.dom.client.FocusEvent; +import com.google.gwt.event.dom.client.MouseDownEvent; +import com.google.gwt.event.dom.client.MouseOutEvent; +import com.google.gwt.event.dom.client.MouseOverEvent; +import com.google.gwt.event.dom.client.MouseUpEvent; import com.google.gwt.user.client.ui.Widget;
import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Association; @@ -10,7 +17,10 @@ import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Topic; import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.TopicMap; import us.isidor.gdl.anaToMia.Widgets.base.GdlVisibleObject; +import us.isidor.gdl.anaToMia.Widgets.environment.ActiveStyleHandler; import us.isidor.gdl.anaToMia.Widgets.environment.ExecutionException; +import us.isidor.gdl.anaToMia.Widgets.environment.FocusStyleHandler; +import us.isidor.gdl.anaToMia.Widgets.environment.HoverStyleHandler; import us.isidor.gdl.anaToMia.Widgets.environment.InvalidGdlSchemaException; import us.isidor.gdl.anaToMia.Widgets.values.AbsoluteNumValue; import us.isidor.gdl.anaToMia.Widgets.values.AutoNumUnitValue; @@ -417,4 +427,47 @@ protected void adjustSize() { // ignore this method, since all instances of gdl:View have a static size } + + + @Override + public void onHoverStart(DomEvent event, HoverStyleHandler handler) { + // TODO Auto-generated method stub + + } + + + @Override + public void onHoverEnd(DomEvent event, HoverStyleHandler handler) { + // TODO Auto-generated method stub + + } + + + @Override + public void onFocusStart(DomEvent event, FocusStyleHandler handler) { + // TODO Auto-generated method stub + + } + + + @Override + public void onFocusEnd(DomEvent event, FocusStyleHandler handler) { + // TODO Auto-generated method stub + + } + + + @Override + public void onActiveStart(DomEvent event, ActiveStyleHandler handler) { + // TODO Auto-generated method stub + + } + + + @Override + public void onActiveEnd(DomEvent event, ActiveStyleHandler handler) { + // TODO Auto-generated method stub + + } + }
Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/views/GdlSpecialCreatorTopicView.java ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/views/GdlSpecialCreatorTopicView.java Wed Jul 6 07:41:45 2011 (r568) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/views/GdlSpecialCreatorTopicView.java Wed Jul 6 11:09:04 2011 (r569) @@ -2,14 +2,24 @@
import com.google.gwt.dom.client.Style.Float; import com.google.gwt.dom.client.Style.Overflow; +import com.google.gwt.event.dom.client.BlurEvent; import com.google.gwt.event.dom.client.ClickHandler; +import com.google.gwt.event.dom.client.DomEvent; +import com.google.gwt.event.dom.client.FocusEvent; +import com.google.gwt.event.dom.client.MouseDownEvent; +import com.google.gwt.event.dom.client.MouseOutEvent; +import com.google.gwt.event.dom.client.MouseOverEvent; +import com.google.gwt.event.dom.client.MouseUpEvent; import com.google.gwt.user.client.ui.Widget;
import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Construct; import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Topic; import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.TopicMap; import us.isidor.gdl.anaToMia.Widgets.base.GdlVisibleObject; +import us.isidor.gdl.anaToMia.Widgets.environment.ActiveStyleHandler; import us.isidor.gdl.anaToMia.Widgets.environment.ExecutionException; +import us.isidor.gdl.anaToMia.Widgets.environment.FocusStyleHandler; +import us.isidor.gdl.anaToMia.Widgets.environment.HoverStyleHandler; import us.isidor.gdl.anaToMia.Widgets.environment.InvalidGdlSchemaException; import us.isidor.gdl.anaToMia.Widgets.values.AbsoluteNumValue; import us.isidor.gdl.anaToMia.Widgets.values.AutoNumUnitValue; @@ -418,4 +428,47 @@ protected void adjustSize() { // ignore this method, since all instances of gdl:View have a static size } + + + @Override + public void onHoverStart(DomEvent event, HoverStyleHandler handler) { + // TODO Auto-generated method stub + + } + + + @Override + public void onHoverEnd(DomEvent event, HoverStyleHandler handler) { + // TODO Auto-generated method stub + + } + + + @Override + public void onFocusStart(DomEvent event, FocusStyleHandler handler) { + // TODO Auto-generated method stub + + } + + + @Override + public void onFocusEnd(DomEvent event, FocusStyleHandler handler) { + // TODO Auto-generated method stub + + } + + + @Override + public void onActiveStart(DomEvent event, ActiveStyleHandler handler) { + // TODO Auto-generated method stub + + } + + + @Override + public void onActiveEnd(DomEvent event, ActiveStyleHandler handler) { + // TODO Auto-generated method stub + + } + }
Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/views/GdlSpecialEditorTopicView.java ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/views/GdlSpecialEditorTopicView.java Wed Jul 6 07:41:45 2011 (r568) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/views/GdlSpecialEditorTopicView.java Wed Jul 6 11:09:04 2011 (r569) @@ -2,14 +2,24 @@
import com.google.gwt.dom.client.Style.Float; import com.google.gwt.dom.client.Style.Overflow; +import com.google.gwt.event.dom.client.BlurEvent; import com.google.gwt.event.dom.client.ClickHandler; +import com.google.gwt.event.dom.client.DomEvent; +import com.google.gwt.event.dom.client.FocusEvent; +import com.google.gwt.event.dom.client.MouseDownEvent; +import com.google.gwt.event.dom.client.MouseOutEvent; +import com.google.gwt.event.dom.client.MouseOverEvent; +import com.google.gwt.event.dom.client.MouseUpEvent; import com.google.gwt.user.client.ui.Widget;
import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Construct; import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Topic; import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.TopicMap; import us.isidor.gdl.anaToMia.Widgets.base.GdlVisibleObject; +import us.isidor.gdl.anaToMia.Widgets.environment.ActiveStyleHandler; import us.isidor.gdl.anaToMia.Widgets.environment.ExecutionException; +import us.isidor.gdl.anaToMia.Widgets.environment.FocusStyleHandler; +import us.isidor.gdl.anaToMia.Widgets.environment.HoverStyleHandler; import us.isidor.gdl.anaToMia.Widgets.environment.InvalidGdlSchemaException; import us.isidor.gdl.anaToMia.Widgets.values.AbsoluteNumValue; import us.isidor.gdl.anaToMia.Widgets.values.AutoNumUnitValue; @@ -420,4 +430,48 @@ protected void adjustSize() { // ignore this method, since all instances of gdl:View have a static size } + + + @Override + public void onHoverStart(DomEvent event, HoverStyleHandler handler) { + // TODO Auto-generated method stub + + } + + + @Override + public void onHoverEnd(DomEvent event, HoverStyleHandler handler) { + // TODO Auto-generated method stub + + } + + + @Override + public void onFocusStart(DomEvent event, FocusStyleHandler handler) { + // TODO Auto-generated method stub + + } + + + @Override + public void onFocusEnd(DomEvent event, FocusStyleHandler handler) { + // TODO Auto-generated method stub + + } + + + @Override + public void onActiveStart(DomEvent event, ActiveStyleHandler handler) { + // TODO Auto-generated method stub + + } + + + @Override + public void onActiveEnd(DomEvent event, ActiveStyleHandler handler) { + // TODO Auto-generated method stub + + } + + }