Author: lgiessmann Date: Thu Jul 7 06:50:26 2011 New Revision: 575
Log: gdl-frontend: Widgets: foxed a bug in the style-handlers, which are responsible for setting the css properties of active, hover and focus
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/text/GdlText.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 Thu Jul 7 05:58:31 2011 (r574) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/GdlVisibleObject.java Thu Jul 7 06:50:26 2011 (r575) @@ -65,7 +65,7 @@ protected ArrayList<Pair<String, String>> focusCssNamesAndStyles = new ArrayList<Pair<String,String>>(); protected ArrayList<Pair<String, String>> hoverCssNamesAndStyles = new ArrayList<Pair<String,String>>(); protected ArrayList<Widget> subElements = new ArrayList<Widget>(); - protected ArrayList<Pair<TextArea, ArrayList<EventHandler>>> eventHandlers = new ArrayList<Pair<TextArea, ArrayList<EventHandler>>>(); + protected ArrayList<Pair<Widget, ArrayList<EventHandler>>> eventHandlers = new ArrayList<Pair<Widget, ArrayList<EventHandler>>>();
// some constructors @@ -1573,39 +1573,36 @@ // adds the passed handler to the list eventHandlers - private void addEventHandler(TextArea elem, EventHandler handler){ + private void addEventHandler(Widget elem, EventHandler handler){ if(handler == null || elem == null) return; - for (Pair<TextArea, ArrayList<EventHandler>> item : this.eventHandlers) { + for (Pair<Widget, ArrayList<EventHandler>> item : this.eventHandlers) { if(item.getFirst().equals(elem)){ - item.getSecond().add(handler); - return; + if(!item.getSecond().contains(handler)){ + item.getSecond().add(handler); + return; + } } } ArrayList<EventHandler> newHandlerList = new ArrayList<EventHandler>(); newHandlerList.add(handler); - this.eventHandlers.add(new Pair<TextArea, ArrayList<EventHandler>>(elem, newHandlerList)); + this.eventHandlers.add(new Pair<Widget, 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) { + private void removeEventHandler(Widget elem, EventHandler handler){ + for (Pair<Widget, ArrayList<EventHandler>> item : this.eventHandlers) { if(item.getFirst().equals(elem)){ - for (EventHandler handlerItem : item.getSecond()) { - if(handlerItem.equals(handler)){ - item.getSecond().remove(handlerItem); - return; - } - } + item.getSecond().remove(handler); } } } // returns the last handler bound to the passed element. - private EventHandler getLastHandler(TextArea elem){ - for (Pair<TextArea, ArrayList<EventHandler>> item : this.eventHandlers) { + private EventHandler getLastHandler(Widget elem){ + for (Pair<Widget, ArrayList<EventHandler>> item : this.eventHandlers) { if(item.getFirst().equals(elem)){ int idx = item.getSecond().size() - 1; if(idx >= 0){ @@ -1617,6 +1614,7 @@ return null; } + // applies the styles bound to hover and the passed element private void onHoverStart(Widget widget){ for (Pair<String, String> elem : this.hoverCssNamesAndStyles) { @@ -1643,7 +1641,7 @@ // some handler for applying the css style bound to the pseudo classes hover, active and focus public void onHoverStart(MouseOverEvent event, HoverStyleHandler handler) { - TextArea source = (TextArea)event.getSource(); + Widget source = (Widget)event.getSource(); this.addEventHandler(source, handler); for (Pair<String, String> elem : this.hoverCssNamesAndStyles) { DOM.setStyleAttribute(source.getElement(), elem.getFirst(), elem.getSecond()); @@ -1672,7 +1670,7 @@
// shall be called to apply the styles of the focus class public void onFocusStart(FocusEvent event, FocusStyleHandler handler) { - TextArea source = (TextArea)event.getSource(); + Widget source = (Widget)event.getSource(); this.addEventHandler(source, handler); for (Pair<String, String> elem : this.focusCssNamesAndStyles) { DOM.setStyleAttribute(source.getElement(), elem.getFirst(), elem.getSecond()); @@ -1683,7 +1681,7 @@ // shall be called when the blur event was fired public void onFocusEnd(BlurEvent event, FocusStyleHandler handler) { try{ - TextArea source = (TextArea)event.getSource(); + Widget source = (Widget)event.getSource(); this.removeEventHandler(source, handler); EventHandler lastHandler = this.getLastHandler(source); if(lastHandler == null){ @@ -1700,7 +1698,7 @@ // shall be called to apply the styles of the sctive class public void onActiveStart(MouseDownEvent event, ActiveStyleHandler handler) { - TextArea source = (TextArea)event.getSource(); + Widget source = (Widget)event.getSource(); this.addEventHandler(source, handler); for (Pair<String, String> elem : this.activeCssNamesAndStyles) { DOM.setStyleAttribute(source.getElement(), elem.getFirst(), elem.getSecond()); @@ -1711,7 +1709,7 @@ // shall be called to apply the styles of the focus class public void onActiveEnd(MouseUpEvent event, ActiveStyleHandler handler) { try{ - TextArea source = (TextArea)event.getSource(); + Widget source = (Widget)event.getSource(); this.removeEventHandler(source, handler); EventHandler lastHandler = this.getLastHandler(source); if(lastHandler == null){
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 Thu Jul 7 05:58:31 2011 (r574) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/text/GdlText.java Thu Jul 7 06:50:26 2011 (r575) @@ -70,7 +70,7 @@ // removes the passed element and all its handlers from the outer element protected void removeTextArea(TextArea elem) throws InvalidGdlSchemaException, ExecutionException{ - for (Pair<TextArea, ArrayList<EventHandler>> item : this.eventHandlers) { + for (Pair<Widget, ArrayList<EventHandler>> item : this.eventHandlers) { if(item.getFirst().equals(elem)){ this.eventHandlers.remove(item); break;