Spark theme vs Halo theme

Hi - I tried the following in one of my mxml files in Flex SDK4.
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" dropShadowEnabled="true" dropShadowColor="#EBE6E6"
     backgroundColor="#E8E5E5" width="280" alpha="1" borderColor="#8d8d8d" borderThickness="1" borderStyle="solid" cornerRadius="8" creationComplete="setPopMsg(),fireEvent()" >
It gave an error "The style 'borderThickness' is only supported by type 'mx.containers.Canvas' with the theme(s) 'halo'."
Should we use only Spark theme with Flex 4? What is the difference between Spark and Halo themes?  which is good? Also what is the equivalent of setting borderThickness in spark theme?

Now that most of Halo theme which we used do it by CSS is no longer valid, also if a application is using "Halo" theme then the application can't be simple changed to "Spark" theme withput considerable change to UI look and feel. Also simple thing like TitleWindow close button is now part of skinning if using "Spark" theme, This is no longer a property of s:TitleWindow unlike mx:TitleWindow, similarly header color  was simple in mx:Panel but in s:Panel we have to do a  programatic skining. I am not sure why Adobe decided to "hide" CSS style for all the component.
Anybody has any insight into ? It is much more difficult to change theme dynamically.
Also changing the default color of mx:ProgressBar with "Halo" was so easy but with mx:ProgressBar with "Spark" theme, we have write a custom skin just for the progress bar.
Thanks

Similar Messages

  • Modules with Halo Theme causes errors in other modules with Spark theme

    Hi,
    We have a large application which calls several modules, some old and some new.
    Most modules and the main App are using only MX components and were styled based on default mx theme, thus we want to compile these modules with the flag to use the old Halo theme.
    But when we did this our new module that contains spark components (Which isn't compiled with this flag) couldn't find the default skin for the spark components.
    Using the -keep-all-type-selectors flag didn't work in this case.
    Only when we removed the Halo theme flag from other modules and main app it worked.
    Is there any other option?
    Because using the old modules with spark theme causes major change in the appearance of our application.
    Thanks,
    Dafna.

    I think if you mix themes you'll need to specify more styles on the
    non-default theme because the set of globals and other defaults will be
    different.

  • [svn:fx-trunk] 5170: Round 2 of bug fixes for the Spark skins for Halo components.

    Revision: 5170
    Author: [email protected]
    Date: 2009-03-04 17:50:32 -0800 (Wed, 04 Mar 2009)
    Log Message:
    Round 2 of bug fixes for the Spark skins for Halo components. Thanks to Alex for help with the data grid issues.
    Bugs fixed:
    SDK-19655 - Setting rowCount property on DataGrid causes extra blank row to be displayed
    SDK-19652 - Items in a DataGrid do not line up after scrolling.
    SDK-19605 - disabled Halo ColorPicker with Gumbo skin draws too dark
    SDK-19596 - When you have a single button on an Alert, the left edge looks flatter than the right
    SDK-19585 - Menus compiled with the halo theme in Flex 4 have a different backgroundColor than in Flex 3
    SDK-19665 - Halo List with Gumbo skin doesnt draw the alternating item color all the way to the right edge of the control if VScrollBar is present
    SDK-19651 - odd header rendering issue on Halo DataGrid with Gumbo skin
    QA Notes: The alert layout code was positioning the buttons/text on sub-pixel boundaries if the width or height of the alert was an odd number of pixels. We always snap to pixel boundaries now, but this may cause bitmap compare issues with Alert.
    Ticket Links:
    http://bugs.adobe.com/jira/browse/SDK-19655
    http://bugs.adobe.com/jira/browse/SDK-19652
    http://bugs.adobe.com/jira/browse/SDK-19605
    http://bugs.adobe.com/jira/browse/SDK-19596
    http://bugs.adobe.com/jira/browse/SDK-19585
    http://bugs.adobe.com/jira/browse/SDK-19665
    http://bugs.adobe.com/jira/browse/SDK-19651
    Modified Paths:
    flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DataGrid.as
    flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/alertClasses/AlertForm.as
    flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ScrollControlBase.as
    flex/sdk/trunk/frameworks/projects/halo/defaults.css
    flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/ColorPickerSkin.mxml

  • [svn:fx-trunk] 5152: First pass of bug fixes for the Spark skins for Halo components.

    Revision: 5152
    Author: [email protected]
    Date: 2009-03-03 13:18:45 -0800 (Tue, 03 Mar 2009)
    Log Message:
    First pass of bug fixes for the Spark skins for Halo components.
    Bugs:
    SDK-19963 - themeColor should not affect rollOverColor or selectionColor in flex 4
    SDK-19654 - Spark skin for the Halo ComboBox dropdown needs a drop shadow
    SDK-19637 - Halo HScrollBar/VScrollBar controls dont render correctly when specifying includeIn states
    SDK-19634 - Halo ProgressBar default size is very different when using Halo vs Gumbo theme
    SDK-19626 - Flicker when toggling enabled property on Halo TabBar control with Gumbo skin
    SDK-19556 - selected Halo CheckBox and RadioButton icons briefly flicker when you roll over them
    SDK-19658 - Halo ComboBox with Gumbo skin has an odd flicker
    Doc/QA Notes: The fix for SDK-19963 includes a compatibility-version check. When compatibility-version < 4, setting themeColor implicitly sets rollOverColor and selectionColor, if they have not been set. When compatibility-version >= 4, you must explicitly set rollOverColor and selectionColor, even when using the Halo theme.
    Ticket Links:
    http://bugs.adobe.com/jira/browse/SDK-19963
    http://bugs.adobe.com/jira/browse/SDK-19654
    http://bugs.adobe.com/jira/browse/SDK-19637
    http://bugs.adobe.com/jira/browse/SDK-19634
    http://bugs.adobe.com/jira/browse/SDK-19626
    http://bugs.adobe.com/jira/browse/SDK-19556
    http://bugs.adobe.com/jira/browse/SDK-19658
    http://bugs.adobe.com/jira/browse/SDK-19963
    Modified Paths:
    flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxApplication.as
    flex/sdk/trunk/frameworks/projects/framework/defaults.css
    flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Button.as
    flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ComboBase.as
    flex/sdk/trunk/frameworks/projects/framework/src/mx/core/Application.as
    flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as
    flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/RectangularDropShadow.as
    flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/BorderSkin.mxml
    flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/ProgressBarTrackSkin.mxm l

  • [svn:fx-trunk] 9419: 2nd attempt to check in prototypes of ControlBars in Panel and Application , Spark Containers in Halo Navigators, Halo ViewStack in Spark ButtonBar.

    Revision: 9419
    Author:   [email protected]
    Date:     2009-08-20 09:19:04 -0700 (Thu, 20 Aug 2009)
    Log Message:
    2nd attempt to check in prototypes of ControlBars in Panel and Application, Spark Containers in Halo Navigators, Halo ViewStack in Spark ButtonBar.  APIs should match spec but are subject to change from PARB.  Skins are subject to tweaking after XD review
    QE Notes: The following tests will fail and need updating:
    gumbo/containers/Panel/Properties/Panel_Properties_position Panel_Properties_rotate
    apollo/spark/components/Window/properties/window_properties_titleIcon_tests titleIcon_test8
    Doc Notes: None
    Bugs: None
    Reviewer: Darrell, Glenn, Ryan
    API Change: No
    Is noteworthy for integration: No
    tests: checkintests mustella/gumbo/components/Application, gumbo/components/ButtonBar, gumbo/containers/Panel, apollo/gumbo/spark/Window, containers/ViewStack, containers/Accordion,
    states/Integration/TabNavApp, states/Reparent
    Modified Paths:
        flex/sdk/trunk/frameworks/projects/airframework/src/spark/skins/spark/SparkChromeWindowed ApplicationSkin.mxml
        flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Accordion.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/TabNavigator.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/ViewStack.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/NavBar.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/core/Container.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/events/FlexEvent.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/FocusManager.as
        flex/sdk/trunk/frameworks/projects/spark/src/spark/components/Application.as
        flex/sdk/trunk/frameworks/projects/spark/src/spark/components/ButtonBar.as
        flex/sdk/trunk/frameworks/projects/spark/src/spark/components/Panel.as
        flex/sdk/trunk/frameworks/projects/spark/src/spark/components/SkinnableContainer.as
        flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/ApplicationSkin.mxml
        flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/PanelSkin.mxml
        flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/PanelSkin.mxml
        flex/sdk/trunk/frameworks/spark-manifest.xml
        flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/builder/ComponentBuilder.jav a
        flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/lang/StandardDefs.java
        flex/sdk/trunk/modules/compiler/src/java/flex2/compiler_en.properties
    Added Paths:
        flex/sdk/trunk/frameworks/projects/framework/src/mx/core/IDeferredContentOwner.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/core/INavigatable.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/core/INavigatorContent.as
        flex/sdk/trunk/frameworks/projects/spark/src/spark/components/NavigatorChild.as
    Removed Paths:
        flex/sdk/trunk/frameworks/projects/spark/src/spark/core/IDeferredContentOwner.as

  • Upgrade to Flex 4, Halo theme, embedded font doesn't work for Spark Label

    I'm upgrading an application to Flex 4 from Flex 3.5 using the Halo theme.  If I include a Spark Label in my application the Spark Label does not render the text using the font I defined in my CSS.  My MX Labels render fine.  Here is an example application that replicates my issue.  So,
    Compile and run using Spark theme.  Both Labels render the text with the correct font.
    Compile and run using Halo theme.  Only MX Label renders the text with the correct font.
    Is it not possible to do what I want?
    Thanks
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
                      xmlns:s="library://ns.adobe.com/flex/spark"
                      xmlns:mx="library://ns.adobe.com/flex/mx"
                      minWidth="250" minHeight="250">
         <fx:Style>
              @namespace mx "library://ns.adobe.com/flex/mx";
              @namespace s "library://ns.adobe.com/flex/spark";
              @font-face
                   fontFamily: Verdana;
                   fontWeight: normal;
                   fontStyle: normal;
                   src: url("./style/fonts/verdana.ttf");
                   embedAsCFF: false;
              @font-face
                   fontFamily: VerdanaCFF;
                   fontWeight: normal;
                   fontStyle: normal;
                   src: url("./style/fonts/verdana.ttf");
                   embedAsCFF: true;
              mx|Label
                   font-family: Verdana;
              s|Label
                   font-family: VerdanaCFF;
         </fx:Style>
         <fx:Declarations>
              <!-- Place non-visual elements (e.g., services, value objects) here -->
         </fx:Declarations>
         <s:VGroup>
              <mx:Label text="My text" />
              <s:Label text="My text" />          
         </s:VGroup>
    </mx:Application>

    I think you might need to set the fontLookup:
            s|Label
                font-family: VerdanaCFF;
                fontLookup: "embeddedCFF";     

  • Ant task to include Halo theme

    Hi,
    I recently migrated from Flex 3.4 to Flex 4. Everything works fine when I compile the application using Flash Builder 4. But I am having issues making our automated ant builds pick up the Halo theme over the Spark theme.
    In FB4, I just used the "Flex Theme" options under Project -> Properties to define the Halo theme as the default theme.Before that I used the -theme compiler argument. Both work fine.
    For our ant task, I tried adding:
      <compiler.theme dir="${FLEX_HOME}/frameworks" append="false">
                 <include name="/themes/Halo/halo.swc" />
      </compiler.theme>
    Unfortunately that does not seem to work and the result still shows the Spark theme. I also tried making "theme" a task attribute and the other options according to Flex 4 docs ( http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7a63.html ), but to no avail.
    I have very limited experience with ant and would appreciate some input.
    Thanks!

    I just ran into this same issue yesterday, Here's what worked for me, placed between the <mxmlc>   </mxmlc> tags
    <theme dir="${FLEX_HOME}/frameworks/themes/Halo">
           <include name="halo.swc" />
    </theme>

  • [svn:fx-trunk] 10766: Re-commit compiler errors for other theme' s styles feature.

    Revision: 10766
    Author:   [email protected]
    Date:     2009-09-30 15:55:55 -0700 (Wed, 30 Sep 2009)
    Log Message:
    Re-commit compiler errors for other theme's styles feature. If Style metadata has a "themes" attribute, the style is only valid if that theme is applied.
    The Spark theme is applied by default. The halo theme can be specified as a compiler argument or by selecting the "MX Only" component set in Builder.
    All other themes need to be applied using theme+= instead of theme=. If you use theme= you will get warnings about styles used in CSS selectors, and errors if you use any theme-specific style as an attribute on an MXML tag.
    By default, styles that aren't valid for the current theme are errors. These can be changed to warnings with the report-invalid-styles-as-warnings compiler option.
    QE notes: Expect test breakage
    Doc notes: The new policy for themes needs to be documented.
    Bugs: none yet, but I'm sure there will be some...
    Reviewer: Ryan
    Tests run: checkintests, cyclone
    Is noteworthy for integration: Yes
    Modified Paths:
        flex/sdk/trunk/frameworks/projects/framework/defaults.css
        flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/ApplicationControlBar.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/ControlBar.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Button.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ButtonBar.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/CalendarLayout.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ComboBase.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DateChooser.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/RadioButton.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/TextArea.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ToolTip.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Tree.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/VideoDisplay.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/colorPickerClasses/SwatchPan el.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/ListBase.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ScrollControlBase.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/CursorManager.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/ToolTipBorder.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/metadata/SkinStyles.as
        flex/sdk/trunk/frameworks/projects/halo/defaults.css
        flex/sdk/trunk/frameworks/projects/spark/defaults.css
        flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/SkinnableDataContainerSkin .mxml
        flex/sdk/trunk/frameworks/projects/sparkskins/src/SparkSkinsClasses.as
        flex/sdk/trunk/frameworks/tests/basicTests/BasicTests.css
        flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/common/CompilerConfiguration.java
        flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/common/DefaultsConfigurator.java
        flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/common/MxmlConfiguration.java
        flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/css/StylesContainer.java
        flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/fxg/FXGCompiler.java
        flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/ImplementationCompiler.java
        flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/InterfaceCompiler.java
        flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/MxmlConfiguration.java
        flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/builder/ComponentBuilder.jav a
        flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/lang/AttributeHandler.java
        flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/lang/DeclarationHandler.java
        flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/reflect/Type.java
        flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/reflect/TypeTable.java
        flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/rep/MxmlDocument.java
        flex/sdk/trunk/modules/compiler/src/java/flex2/compiler_en.properties
        flex/sdk/trunk/modules/compiler/src/java/flex2/tools/PreLink.java
    Added Paths:
        flex/sdk/trunk/frameworks/themes/Spark/spark.css
    Removed Paths:
        flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/ApplicationBackground.as

    Revision: 10766
    Author:   [email protected]
    Date:     2009-09-30 15:55:55 -0700 (Wed, 30 Sep 2009)
    Log Message:
    Re-commit compiler errors for other theme's styles feature. If Style metadata has a "themes" attribute, the style is only valid if that theme is applied.
    The Spark theme is applied by default. The halo theme can be specified as a compiler argument or by selecting the "MX Only" component set in Builder.
    All other themes need to be applied using theme+= instead of theme=. If you use theme= you will get warnings about styles used in CSS selectors, and errors if you use any theme-specific style as an attribute on an MXML tag.
    By default, styles that aren't valid for the current theme are errors. These can be changed to warnings with the report-invalid-styles-as-warnings compiler option.
    QE notes: Expect test breakage
    Doc notes: The new policy for themes needs to be documented.
    Bugs: none yet, but I'm sure there will be some...
    Reviewer: Ryan
    Tests run: checkintests, cyclone
    Is noteworthy for integration: Yes
    Modified Paths:
        flex/sdk/trunk/frameworks/projects/framework/defaults.css
        flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/ApplicationControlBar.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/ControlBar.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Button.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ButtonBar.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/CalendarLayout.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ComboBase.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DateChooser.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/RadioButton.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/TextArea.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ToolTip.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Tree.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/VideoDisplay.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/colorPickerClasses/SwatchPan el.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/ListBase.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ScrollControlBase.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/CursorManager.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/ToolTipBorder.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/metadata/SkinStyles.as
        flex/sdk/trunk/frameworks/projects/halo/defaults.css
        flex/sdk/trunk/frameworks/projects/spark/defaults.css
        flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/SkinnableDataContainerSkin .mxml
        flex/sdk/trunk/frameworks/projects/sparkskins/src/SparkSkinsClasses.as
        flex/sdk/trunk/frameworks/tests/basicTests/BasicTests.css
        flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/common/CompilerConfiguration.java
        flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/common/DefaultsConfigurator.java
        flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/common/MxmlConfiguration.java
        flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/css/StylesContainer.java
        flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/fxg/FXGCompiler.java
        flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/ImplementationCompiler.java
        flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/InterfaceCompiler.java
        flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/MxmlConfiguration.java
        flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/builder/ComponentBuilder.jav a
        flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/lang/AttributeHandler.java
        flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/lang/DeclarationHandler.java
        flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/reflect/Type.java
        flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/reflect/TypeTable.java
        flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/rep/MxmlDocument.java
        flex/sdk/trunk/modules/compiler/src/java/flex2/compiler_en.properties
        flex/sdk/trunk/modules/compiler/src/java/flex2/tools/PreLink.java
    Added Paths:
        flex/sdk/trunk/frameworks/themes/Spark/spark.css
    Removed Paths:
        flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/ApplicationBackground.as

  • Reg: VC Flex Controls Styling using Portal theme.

    Hi,
    We have branded the VC flex controls in Portal themes. I have enabled style option in VC.
    Some Flex UI elements are not getting rendered in VC application because of style option being enabled in VC. The default option loads the VC application properly. Only when style option is enabled in Toos->options->compiler there is a problem
    Below are the versions:
    SAP Enteprise Portal 7 SP15
    SAP Visual Composer 7.1 SP17
    is it becuase of mismatch in the versions ? has anybody faced similar kind of problem ?
    Thanks in advance.
    Regards,
    Aditya Metukul

    This refers to a style in frameworks/projects/framework/defaults.css or, the framework itself. So, it seems as if the Flex framework default style assumes we are using the Spark theme. I'd like to use the Spark theme, but I still have many Halo components to convert.
    It seems like the only way to avoid this situation is to re-compile the framework SWC. Is that the case?

  • Relationship between a Spark DropDownList's dataProvider and selectedItem

    I'm working on an existing project and have come across a somewhat complicated issue regarding a Spark DropDownList's (actually, a custom component inheriting from it) displayed item not changing when its dataProvider is updated.
    Here's the code for the custom TitleWindow component containing the custom DropDownList:
    <?xml version="1.0" encoding="utf-8"?>
    <components:RFTitleWindow xmlns:fx="http://ns.adobe.com/mxml/2009"
                              xmlns:s="library://ns.adobe.com/flex/spark"
                              xmlns:mx="library://ns.adobe.com/flex/mx"
                              xmlns:components="components.*"
                              xmlns:rfform="rfform.*"
                              width="550" height="450"
                              title="{currentState} Site Equipment"
                              cancelButton="{btnCancel}"
                              defaultButton="{btnSave}"
                              initialFocus="{rftName}"
                              creationComplete="init()" close="cancelEdit()">
      <fx:Script>
        <![CDATA[
          import events.SiteEquipmentEvent;
          import events.SiteEquipmentTypeEvent;
          import mx.collections.ArrayList;
          import mx.controls.Menu;
          import mx.core.FlexGlobals;
          import mx.core.UIComponent;
          import mx.events.MenuEvent;
          import mx.managers.PopUpManager;
          import mx.validators.ValidationResult;
          import mx.validators.Validator;
          import spark.events.IndexChangeEvent;
          private const TYPES:Array = ["A", "B", "C", "D"];
          [Bindable] [Embed(source="../assets/images/circle_red_x.gif")] private var icoRedX:Class;
          [Bindable] private var siteEquipment:SiteEquipment;
          private var validators:Array;
          private var typePopUp:Menu;
          public static function open(item:SiteEquipment):SiteEquipmentEdit
            var s:SiteEquipmentEdit = new SiteEquipmentEdit();
            s.siteEquipment = item;
            PopUpManager.addPopUp(s, DisplayObject(FlexGlobals.topLevelApplication), true);
            PopUpManager.centerPopUp(s);
            return s;
          private function init():void
            initTypePopUp();
            if (siteEquipment.id == SiteEquipment.NEW_ID)
              currentState = "New";
            else
              currentState = "Edit";
              validateAll();
              if (!rftName.enabled)
                rfcmbType.setFocus();
            siteEquipment.addEventListener(SiteEquipmentEvent.SITE_EQUIPMENT_SAVE, saveComplete);
          override public function dispose(event:Event = null):void
            super.dispose();
            siteEquipment.removeEventListener(SiteEquipmentEvent.SITE_EQUIPMENT_SAVE, saveComplete);
            typePopUp.removeEventListener("itemClick", typePopUp_click);
            siteEquipment.dispose();
            icoRedX = null;
            siteEquipment = null;
            validators = null;
            typePopUp = null;
            removeChildren();
          private function cancelEdit():void
            siteEquipment.cancelEdit();
          private function saveForm():void
            var newValue:SiteEquipment = new SiteEquipment();
            newValue.id = siteEquipment.id;
            newValue.locid = siteEquipment.locid;
            newValue.name = rftName.trimmedText;
            siteEquipment.save(newValue);
          private function saveComplete(event:Event):void
            dispose();
          private function typePopUp_click(event:MenuEvent):void
            switch(event.item)
              case "Edit Selected Type":
                SiteEquipmentType(rfcmbType.selectedItem).showEditForm();
                break;
              case "Create A New Type":
                new SiteEquipmentType().showEditForm(type_created, null, type_removeListeners);
                break;
          private function type_created(event:SiteEquipmentTypeEvent = null):void
            type_removeListeners(event);
            rfcmbType.selectedItem = event.siteEquipmentType;
          private function type_removeListeners(event:Event):void
            var s:SiteEquipmentType = SiteEquipmentType(event.target);
            s.removeEventListener(SiteEquipmentTypeEvent.SITE_EQUIPMENT_TYPE_CREATE, type_created);
            s.removeEventListener(SiteEquipmentType.SITE_EQUIPMENT_TYPE_CANCEL, type_removeListeners);
          private function initTypePopUp():void
            typePopUp = Menu.createMenu(puType, ['Edit Selected Type', 'Create A New Type']);
            typePopUp.addEventListener("itemClick", typePopUp_click);
          private function popupTypeOptions():void
            var p:Point = puType.localToGlobal(new Point(0, puType.height + 5));
            typePopUp.show(p.x, p.y);
          private function validateAll():void
            var isValid:Boolean;
            for each (var validator:Validator in validators)
              isValid = true;
              for each (var result:ValidationResult in validator.validate().results)
                if (result.isError)
                  isValid = false;
                  break;
              UIComponent(validator.source).styleName = "valid_" + isValid.toString();
          private function rfcmbType_changeHandler(event:IndexChangeEvent):void
            if (TYPES.indexOf(SiteEquipmentType(RFDropDownList(event.target).selectedItem).name) > -1)
              rftName.text = "Blah";
              rftName.enabled = false;
            else
              rftName.enabled = true;
        ]]>
      </fx:Script>
      <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
        <s:DateTimeFormatter id="mdy"
                             dateTimePattern="MM/dd/yyyy"/>
      </fx:Declarations>
      <components:states>
        <s:State name="Edit"/>
        <s:State name="New"/>
      </components:states>
      <rfform:RFForm width="100%" height="100%"
                     saveButton="{btnSave}"
                     validators="{new ArrayList([valQuantity, valHeight])}">
        <rfform:RFFormItem label="Type"
                           width="100%">
          <s:HGroup width="100%">
            <rfform:RFDropDownList id="rfcmbType"
                                   width="100%"
                                   originalValue="{siteEquipment.model.eqType}"
                                   dataProvider="{SiteEquipmentType.all}"
                                   change="rfcmbType_changeHandler(event)"/>
            <rfform:RFButton id="puType"
                             icon="@Embed(source='/Shared/src/assets/images/settings.png')"
                             width="30"
                             click="popupTypeOptions()"/>
          </s:HGroup>
        </rfform:RFFormItem>
      </rfform:RFForm>
    </components:RFTitleWindow>
    I've omitted a little bit of code, so please ask if you need anything that I didn't include.
    In regards to the RFDropDownList, originalValue is saved so that when a new selection is made, the new selection can be compared to the original value.  Setting originalValue sets the RFDropDownList's selectedItem to originalValue.
    When this window is first opened, a new instance of SiteEquipment is created.  Unless the equipment is new, the SiteEquipment instance sets the SiteEquipmentType to whatever has already been saved, using this line:
    eqType = SiteEquipmentType.selectFromObject(item.SITE_EQUIPMENT_TYPE);
    And here's the code from the SiteEquipmentType class:
    package components
      import common.UpdateStatus;
      import events.SiteEquipmentTypeEvent;
      import scripts.MyUtility;
      import flash.events.Event;
      import flash.events.EventDispatcher;
      import flash.utils.setTimeout;
      import mx.collections.ArrayCollection;
      import mx.collections.Sort;
      import mx.collections.SortField;
      import mx.controls.Alert;
      import mx.rpc.events.ResultEvent;
      import mx.utils.ObjectProxy;
      [Event(name="cacheChanged", type="flash.events.Event")]
      [Event(name="SITE_EQUIPMENT_TYPE_CREATE", type="events.SiteEquipmentTypeEvent")]
      [Event(name="SITE_EQUIPMENT_TYPE_EDIT", type="events.SiteEquipmentTypeEvent")]
      [Event(name="SITE_EQUIPMENT_TYPE_CANCEL", type="flash.events.Event")]
      public class SiteEquipmentType extends ObjectProxy
        public static const NEW_ID:int = -1;
        public static const SITE_EQUIPMENT_TYPE_CANCEL:String = "siteEquipmentTypeCancel";
        [Bindable]
        public var id:int = NEW_ID;
        [DefaultProperty]
        [Bindable]
        public var name:String = "";
        private static var dict:Object = new Object();
        private static var getAllServiceCalled:Boolean = false;
        private static var eventDispatcher:EventDispatcher = new EventDispatcher();
        private var updateStatus:UpdateStatus = UpdateStatus.COMPLETE;
        public function SiteEquipmentType(item:Object = null, keepInCache:Boolean = true)
          if (item == null)
            return;
          else if (item is int)
            id = int(item);
            refreshFromDb();
          else
            updateFromResult(item);
          if (keepInCache)
            addToCache(this);
        private static var _all:ArrayCollection = new ArrayCollection();
        public static function get all():ArrayCollection
          if (!getAllServiceCalled)
            getAllServiceCalled = true;
            MyUtility.httpPost("/page.aspx", {request:"SITE_EQUIPMENT_TYPE"}, getAll_result);
            var s:Sort = new Sort();
            s.fields = [new SortField("name", true)];
            _all.sort = s;
          return _all;
        public static function addEventListener(type:String, listener:Function):void
          eventDispatcher.addEventListener(type, listener);
        public static function removeEventListener(type:String, listener:Function):void
          eventDispatcher.removeEventListener(type, listener);
        public static function dispatchEvent(event:Event):Boolean
          return eventDispatcher.dispatchEvent(event);
        private static function addToCache(item:SiteEquipmentType):void
          removeFromCache(item.id);
          dict[item.id] = item;
          _all.addItem(item);
          dispatchEvent(new Event("cacheChanged"));
        private static function removeFromCache(id:int):void
          var item:SiteEquipmentType = dict[id];
          if (item)
            delete dict[id];
            _all.removeItemAt(_all.getItemIndex(item));
        public static function selectById(id:int):SiteEquipmentType
          if (dict[id])
            return dict[id];
          return new SiteEquipmentType(id);
        public static function selectFromObject(obj:Object):SiteEquipmentType
          var selected:SiteEquipmentType;
          var objId:int = obj.SITE_EQUIPMENT_TYPE_ID;
          if (dict[objId])
            selected = dict[objId];
            selected.updateFromResult(obj);
          else
            selected = new SiteEquipmentType(obj);
          return selected;
        private function updateFromResult(item:Object):void
          if (item)
            id = item.SITE_EQUIPMENT_TYPE_ID;
            name = item.SITE_EQUIPMENT_TYPE_NAME;
        private function toRequestObject():Object
          var o:Object = new Object();
          o.SITE_EQUIPMENT_TYPE_ID = id;
          o.SITE_EQUIPMENT_TYPE_NAME = name;
          return o;
        public function copy():SiteEquipmentType
          return new SiteEquipmentType(this.toRequestObject());
        public function save(value:SiteEquipmentType):void
          if (updateStatus == UpdateStatus.PENDING)
            Alert.show("Site Equipment Type is pending an update.", "Pending Update");
            return;
          else if (updateStatus == UpdateStatus.ERROR)
            Alert.show("There is a problem with this Site Equipment Type, and it cannot be saved. Please close the window.", "Save Failure");
            return;
          var request:Object;
          if (id == NEW_ID)
            if (value)
              request = value.toRequestObject();
            else
              request = toRequestObject();
            request._COMMAND = "INSERT";
          else
            if (value)
              request = MyUtility.objectDiff(this.toRequestObject(), value.toRequestObject());
              if (!request)
                dispatchEvent(new SiteEquipmentTypeEvent(SiteEquipmentTypeEvent.SITE_EQUIPMENT_TYPE_CREATE, this));
                return;
            else
              request = toRequestObject();
            request._COMMAND = "UPDATE";
            request._SITE_EQUIPMENT_TYPE_ID = id;
          delete request.SITE_EQUIPMENT_TYPE_ID;
          updateStatus = UpdateStatus.PENDING;
          MyUtility.httpPost("/updatetable.aspx?_SCHEMA=dbo&_TABLENAME=SITE_EQUIPMENT_TYPE&_RETURNRECORD=1", request, httpSave_result);
        public function toString():String
          return name;
        public function refreshFromDb():void
          if (updateStatus != UpdateStatus.PENDING)
            updateStatus = UpdateStatus.PENDING;
            MyUtility.httpPost("/page.aspx", {id:id, request:"Site_Equipment_Type"}, httpSelect_result);
        public function showEditForm(onCreate:Function = null, onEdit:Function = null, onCancel:Function = null):void
          if (id == 0)
            Alert.show("Edits are not allowed on this Site Equipment Type.", "Not Allowed");
            return;
          if (onCreate != null)
            addEventListener(SiteEquipmentTypeEvent.SITE_EQUIPMENT_TYPE_CREATE, onCreate);
          if (onEdit != null)
            addEventListener(SiteEquipmentTypeEvent.SITE_EQUIPMENT_TYPE_EDIT, onEdit);
          if (onCancel != null)
            addEventListener(SITE_EQUIPMENT_TYPE_CANCEL, onCancel);
          if (updateStatus == UpdateStatus.PENDING)
            setTimeout(showEditForm, 500);
          else if (updateStatus == UpdateStatus.COMPLETE)
            SiteEquipmentTypeEdit.open(this);
        public function cancelEdit():void
          dispatchEvent(new Event(SITE_EQUIPMENT_TYPE_CANCEL));
        private static function getAll_result(event:ResultEvent):void
          if (event.result.ROOT)
            if (event.result.ROOT.ERROR)
              Alert.show(event.result.ROOT.ERROR, "Error");
            else
              for each (var o:Object in MyUtility.ToArrayCollection(event.result.ROOT.SITE_EQUIPMENT_TYPE))
                var i:SiteEquipmentType = dict[o.SITE_EQUIPMENT_TYPE_ID];
                // If the Site Equipment Type is already in the cache, update it based on the XML returned
                if (i)
                  i.updateFromResult(o);
                  // Otherwise, create a new one from the XML returned
                else
                  i = new SiteEquipmentType(o);
              _all.refresh();
        private function httpSelect_result(event:ResultEvent):void
          if (event.result.ROOT)
            if (event.result.ROOT.ERROR)
              Alert.show(event.result.ROOT.ERROR, "Error");
              updateStatus = UpdateStatus.ERROR;
            else
              updateFromResult(event.result.ROOT.SITE_EQUIPMENT_TYPE);
              updateStatus = UpdateStatus.COMPLETE;
          else
            updateStatus = UpdateStatus.ERROR;
        private function httpSave_result(event:ResultEvent):void
          if (event.result.ROOT.ERROR)
            Alert.show(event.result.ROOT.ERROR, "Error");
            updateStatus = UpdateStatus.ERROR;
          else
            try
              updateStatus = UpdateStatus.COMPLETE;
              if (id == NEW_ID)
                id = event.result.ROOT.RESULTS.IDENTITY;
                addToCache(this);
                updateFromResult(event.result.ROOT["DBO.SITE_EQUIPMENT_TYPE"]);
                dispatchEvent(new SiteEquipmentTypeEvent(SiteEquipmentTypeEvent.SITE_EQUIPMENT_TYPE_CREATE, this));
              else
                updateFromResult(event.result.ROOT["DBO.SITE_EQUIPMENT_TYPE"]);
                dispatchEvent(new SiteEquipmentTypeEvent(SiteEquipmentTypeEvent.SITE_EQUIPMENT_TYPE_EDIT, this));
                SiteEquipmentType.dispatchEvent(new SiteEquipmentTypeEvent(SiteEquipmentTypeEvent.SITE_EQUIPMENT_TYPE_EDIT, this));
            catch(ex:Error)
              Alert.show(ex.message, "Error");
              updateStatus = UpdateStatus.ERROR;
    So the "_all" ArrayCollection serves as a cache of all of the different site equipment types.  When the edit window is first opened and a new instance of SiteEquipment is created, the SiteEquipmentType of the current SiteEquipment is added to _all and becomes the only SiteEquipmentType within _all.
    At this point, the DropDownList has the correct item selected.  The problem occurs when the result comes in from getting all of the SiteEquipmentTypes.  The contents of _all are flushed, and each SiteEquipmentType is added in.  Once this happens, the DropDownList will have nothing for selectedItem.
    I know this is quite complex, but any help would be greatly appreciated.

    Ok, I have this figured out now.  First, though, I'll point out that this worked fine when using MX components and the Halo theme; the problem only appeared after switching over to Spark components and the Spark theme.  Anyway, since this class functions as a singleton (as best I understand them), I added a boolean variable to the SiteEquipmentType class representing whether or not the results from the HTTPService call had come back and been inserted into _all.  So in the TitleWindow's init method, I only populated the DropDownList's originalValue (which in turn sets the selectedItem) if that variable is true.  The first time an instance of the TitleWindow component is opened, though, this variable will initially be false.  So back in the SiteEquipmentType class, I have it dispatch an event right after setting the variable to true, and the TitleWindow componet will add a listener for this event if the variable is originally false.  If anyone needs further explanation, please ask.

  • Why can't I change button width smaller than 70px in a spark tilegroup?

    I have an <s:TileGroup> in spark theme, and It contains several buttons.
    I'm unable to change the width of the buttons below 70px.
    I tried changing "minWidth", but that doesn't seem to do anything?
    Why is this and how can i change the width?

    Hi,
    I tried for the same and its working fine pass the same value for the width and minWidth.
    I have tried with 5 and 10. Its working fine.
    with Regards,
    Shardul Singh Bartwal

  • Spark - Drawing a rounded rectangle with 3-sided border?

    I am upgrading to the Spark theme, and I am trying to draw a rectangle, with a corner radius of 20, with a border on only the top, right, and bottom sides.
    Basically, I want it to dock flush left in my application and extend out in a rounded rectangle.
    But I Cannot figure out how I would draw this in SVG? Anyone done this yet?

    Ned,
    Thank you for your response.  I apologize for the delay in my own response.
    I was seeing distortion in x direction as well.
    I was able to solve my problem using 9-slice scaling.  I used the scale9Grid property.

  • BackgroundColor is only supported by type 'mx.containers.Box' with the theme 'halo, spark'

    Hello:
    I just upgrade from Flash Builder Burrito to 4.5. After importing my Burrito project into 4.5, I got like 30 errors saying the following:
    The style 'backgroundColor' is only supported by type 'mx.containers.Box' with the theme(s) 'halo, spark'.
    I have been using backgroundColor through the project to set colors ... Is there a new property name? Do I have to start using CSS?
    The only option I had for theme was "Mobile Theme".
    I would like to be able to use backgroundColor with out rewritting all that code. Is there a way?
    Thanks
    Paul

    I used to have the prerelease "burrito" which I coded all the background colors using the "backgroundColor" property. I just bought the release version from the store and after I unstalled it I started getting the compiler errors releated to "backgroundColor".
    Where do I locate the "use flex 3 compatability" box?

  • Flash Builder 4 is ANNOYING!

    Is anyone else annoyed with how Flash Builder 4 runs?
    Stuff I hate:
    I hate the new Package Explorer. Why isn't it alphabetical?...dumb.
    I hate the twirl downs on in the Package Explorer that show the methods and such of a class. This is what the Outline view panel is for. Stop cluttering the Package Explorer.
    I HATE HATE HATE the damn code hints anytime I'm trying to type some mxml that automatically come up on roll over! They slow down Eclispe so damn much and nearly anywhere I put my mouse launches another damn one so I can't even see what I am typing.
    Stuff I'm not thrilled about:
    Limited abiltity with the new spark components. Why isn't the Alert windows a spark component that I can skin? Why are you taking away functionality only to say it still exist in the mx components forcing me to create a bastardized application?
    It would be super nice if the design view had the ability to choose the skin in of a component much like how to you for CSS.
    Anyway....that's it for now. Am I the only one feeling this way?

    Hi Alex,
    So can you provide more specifics about what you dislike about the Spark theme? Even better feel free to pass along tweaks that you improve matters for you.
    We've gotten some good feedback on it to date, mostly that it's more modern and lighter than Halo.
    Definitely heard similar feedback on the drop shadow however...it was intended to be more prominent than Halo's, similar to OSX I believe.
    Thanks for the input.
    Regards,
    Corey

  • Flex 4 Mdi canvass, how to set background image..?

    Hi.,
         Now i try to use mdi canvass  background image,how to set  background image in mdi canvass in flex 4..
    With Regards
    LinFlex-

    In the past flex 3 version, there is an attribute call <flexlib:MDICanvas  backgroundImage="@Embed(source='/imgFolder/imgFile.png')/>
    to set it. However it has problem in Flex 4 because of 'halo' and 'spark' theme library changed.
    The following is my post that still haven't found the answer.
    Dear all,
    We  have a project that doing migration from flex 3 to flex 4. We use  flexlib the latest version of
    flexlib - 2.5 - flex4.zip.
    However we  confronted problems that several of attributes that flex 4 doesn't  support:
    Constraints are listed as follows:
    1) <flexlib:MDICanvas  backgroundImage="@Embed(source='/imgFolder/imgFile.png')/>
    2)  <flexlib:MDICanvas backgroundSize="auto"/>
    3)  <mx:ApplicationControlBar barColor="#000000">
    original error message:
    ====================================================
    Description     Resource    Path    Location    Type
    The style 'backgroundImage' is  only supported by type 'flexlib.mdi.containers.MDICanvas' with the  theme(s) 'halo'.    MainView.mxml     /osss/flex_src/hk/gov/labour/osss/view    line 242    Flex Problem
    Description    Resource    Path     Location    Type
    The style 'backgroundSize' is only supported by type  'flexlib.mdi.containers.MDICanvas' with the theme(s) 'halo'.     MainView.mxml    /osss/flex_src/hk/gov/labour/osss/view    line 242     Flex Problem
    Description     Resource    Path    Location    Type
    The style 'barColor' is only  supported by type 'mx.containers.ApplicationControlBar' with the  theme(s) 'halo'.    MainView.mxml     /osss/flex_src/hk/gov/labour/osss/view    line 227    Flex Problem
    Regards,
    Man  Pak Hong, Dave
    manpakhong
    [email protected]

Maybe you are looking for