/src/org/aswing/skinbuilder/OrientableComponentBackground.as

https://github.com/dsk23LAB/agalthemean
ActionScript | 96 lines | 80 code | 12 blank | 4 comment | 13 complexity | 13b5ea0f32a4a78cae7d5caa71fef3a4 MD5 | raw file
  1. /*
  2. Copyright aswing.org, see the LICENCE.txt.
  3. */
  4. package org.aswing.skinbuilder{
  5. import flash.display.DisplayObject;
  6. import flash.display.Sprite;
  7. import org.aswing.*;
  8. import org.aswing.error.ImpMissError;
  9. import org.aswing.geom.IntRectangle;
  10. import org.aswing.graphics.Graphics2D;
  11. import org.aswing.plaf.ComponentUI;
  12. import org.aswing.plaf.DefaultsDecoratorBase;
  13. import org.aswing.plaf.UIResource;
  14. public class OrientableComponentBackground extends DefaultsDecoratorBase implements GroundDecorator, UIResource{
  15. protected var verticalImage:DisplayObject;
  16. protected var horizotalImage:DisplayObject;
  17. protected var verticalDisabledImage:DisplayObject;
  18. protected var horizotalDisabledImage:DisplayObject;
  19. protected var lastImage:DisplayObject;
  20. protected var imageContainer:Sprite;
  21. protected var loaded:Boolean;
  22. public function OrientableComponentBackground(){
  23. imageContainer = AsWingUtils.createSprite(null, "imageContainer");
  24. imageContainer.mouseChildren = false;
  25. loaded = false;
  26. }
  27. protected function checkReloadAssets(c:Component):void{
  28. if(!loaded){
  29. var ui:ComponentUI = getDefaultsOwner(c);
  30. verticalImage = ui.getInstance(getPropertyPrefix()+"verticalBGImage") as DisplayObject;
  31. horizotalImage = ui.getInstance(getPropertyPrefix()+"horizotalBGImage") as DisplayObject;
  32. verticalDisabledImage = ui.getInstance(getPropertyPrefix()+"verticalBGDisabledImage") as DisplayObject;
  33. horizotalDisabledImage = ui.getInstance(getPropertyPrefix()+"horizotalBGDisabledImage") as DisplayObject;
  34. //default
  35. if(horizotalImage){
  36. imageContainer.addChild(horizotalImage);
  37. lastImage = horizotalImage;
  38. }
  39. loaded = true;
  40. }
  41. }
  42. protected function getPropertyPrefix():String {
  43. throw new ImpMissError();
  44. return null;
  45. }
  46. public function updateDecorator(c:Component, g:Graphics2D, bounds:IntRectangle):void{
  47. checkReloadAssets(c);
  48. var bar:Orientable = Orientable(c);
  49. imageContainer.x = bounds.x;
  50. imageContainer.y = bounds.y;
  51. var image:DisplayObject;
  52. if(bar.getOrientation() == AsWingConstants.HORIZONTAL){
  53. if((!c.isEnabled()) && horizotalDisabledImage){
  54. image = horizotalDisabledImage;
  55. }else{
  56. image = horizotalImage;
  57. }
  58. }else{
  59. if((!c.isEnabled()) && verticalDisabledImage){
  60. image = verticalDisabledImage;
  61. }else{
  62. image = verticalImage;
  63. }
  64. }
  65. if(image != lastImage){
  66. if(lastImage){
  67. imageContainer.removeChild(lastImage);
  68. }
  69. if(image){
  70. imageContainer.addChild(image);
  71. }
  72. lastImage = image;
  73. }
  74. if(image){
  75. image.width = bounds.width;
  76. image.height = bounds.height;
  77. }
  78. }
  79. public function getDisplay(c:Component):DisplayObject{
  80. checkReloadAssets(c);
  81. return imageContainer;
  82. }
  83. }
  84. }