Download results- custom component

I have a template "template.htm" in my custom component.
I have a table inside this template. i want to have an option (as a link) of export to excel...from which i can download the html table with custom file name.
Thanks

What is your business use case? Can you provide more details?
It sounds like you want to convert an HTML table to an Excel file? Is this correct? If so, try the following JavaScript examples:
http://jsfiddle.net/jquerybyexample/xhYcD/
http://datatables.net/extras/tabletools/
https://gist.github.com/insin/1031969
Jonathan
http://jonathanhult.com

Similar Messages

  • Design issue for Download Results!

    Hi All,
    In my application, i am calling two download links which has two different process as shown below:
    htp.p{'table border=1'};
    htp.p{'tr td b a href="f?p=&APP_ID.:70:&SESSION.::NO:YES:P70_DFILE:WXZ">{ Download Results}</a></td></tr>'};
    htp.p{'tr td b a href="f?p=&APP_ID.:70:&SESSION.::NO:YES:P70_DFILE:customer"> {Customer Version Results}</a></td></tr>'};
    htp.p{'/table '};
    When i run this page you will find the download links one benit the other like as shown below:
    Download Results
    Customer version results
    Now there are asking me to change UI design for downloads in such a way that
    Download Results Customer Version results
    I mean they main intension is to have both in single a line having borders separtely and also space between them
    Hope you have understnad my problem, since i was not able to show you with borders, so i have shown as dotted lines.
    Thanks,
    Anoo..
    Edited by: Anoo on Dec 16, 2009 9:28 PM
    Edited by: Anoo on Dec 16, 2009 9:29 PM
    Edited by: Anoo on Dec 16, 2009 9:29 PM
    Edited by: Anoo on Dec 16, 2009 9:30 PM
    Edited by: Anoo on Dec 16, 2009 9:30 PM
    Edited by: Anoo on Dec 16, 2009 9:31 PM
    Edited by: Anoo on Dec 16, 2009 9:38 PM

    Anoo,
    Looks like the forum software has messed-up your post. You should use code tags when you are posting any code. This improves the readability!
    See 'Formatting options' in this link
    Cheers,
    Hari

  • Custom component Search and Result view using value node :pls help

    Hi Experts,
    I am creating a Custom component with Search and Result view using value nodes.
    This is the code I wrote in the Search button event handler method.
    The data which gets in lv_search I need to put in lv_col .
    Can somebody guide me for this.
    Points will be awarded .
    METHOD eh_onsearch.
      DATA : lv_current TYPE REF TO if_bol_bo_property_access,
             lv_search  TYPE zcrm_orgstruct_search,     "Search value node structure
             lv_result  TYPE zcrm_orgstruct_result,         "Result value node structure
             lv_col     TYPE REF TO if_bol_bo_col.
      lv_current ?= me->typed_context->search->collection_wrapper->get_current( ).
      CALL METHOD lv_current->get_properties
        IMPORTING
          es_attributes = lv_search.
      me->typed_context->searchresult->collection_wrapper->set_collection( lv_col ).
      op_toresultview( ).
    ENDMETHOD.
    Regards,
    Lakshmi

    Hi Lakshmi,
    Could you please share with us how it was solved.
    "CALL METHOD lv_current->get_properties
    IMPORTING
    es_attributes = lv_search."
    Did you get any values in lv_search ?
    Because while using value nodes for search view (which inherits from advance search controller  class), the above method does not return any search values entered in the fields.
    Please let me know how did you solve it.
    Thanks & Regards
    Vidhya

  • Unable to Edit the View in Custom Component

    Hi Experts,
    Please help me to resolve this issue !
    I am unable to lock the BOL Entity in my custom component using BTAdminH. I have written the below code in the Edit event Handler for Edit Button. The lr_entity->lock( ) condition statement is getting false and it is skipping the "set_view_editable( me )." code statement. Why??
    This is code excerpt that I have taken from edit button of the BP_HEAD/AccountViewSet and altered to my component/View
    DATA: lr_entity     TYPE REF TO cl_crm_bol_entity,
            lr_controller TYPE REF TO cl_ZVKH8_bspwdcomponent_impl.
      TRY.
          lr_controller ?= me->comp_controller.
          lr_entity ?= lr_controller->typed_context->btadminh->collection_wrapper->get_current( ).
    IF lr_entity IS BOUND.
      IF lr_entity->IS_LOCKED EQ abap_false.
        IF le_entity->IS_CHANGEABLE EQ abap_true.
           IF lr_entity->lock( ) EQ abap_true.
            me->view_group_context->set_view_editable( me ).
           ENDIF.
        ENDIF.
      ENDIF.
    ENDIF.
    and when I directly executed the below code in the Edit event Handler for Edit Button I am receiving the dereferencing NULL value exception. Why in my custom component in many places this happening??
      me->view_group_context->set_view_editable( me ).
    Exception Details
    CX_SY_REF_IS_INITIAL - Dereferencing of the NULL reference
    Method: ZL_ZVKH8_DETAILSEF_IMPL=>EH_ONBACK
    Thanks,
    Bujji

    Hi Summit & NishaNC,
    Thanks for your responses !
    As suggested, I have debugged the code for ->lock( ) method and there are exceptions raised from some methods.
    Method GET_LOCK () -> Method GET_ROOT () ->Method GET_PARENT ()
    At GET_ROOT( ) method i have received an exception
    "Root entity BTAdminH could not be determined" and one more "Entity BTAdminH could not be locked"
    Later when I have checked in MODEL Browser, I found that the BOL object "BTAdminH" for my view is an Access object and not the Root Object.
    Hence, I have a question? Does the locking can be done only for ROOT Objects?
    If this is TRUE then I think this is the major problem with my custom component where even the cross component navigation is also not happening and in many places I am receiving "Dereferencing NULL Value" information.
    Also I have gone through some of the Threads and one information that I found from Sumit Mittal
    1. An access object is an independent entity, has primary keys of its own.
    2. A root object is a special access object that is at the top of the hierarchy based on business rules.
    3. A dependent object's primary keys are supplied by access objects and it's lifetime is bound to them. If the parent object is destroyed, the dependent object is also destroyed.
    4. Search objects are query objects useful for querying root objects
    5. Search result objects - Search objects return the results in the form of a result object together with a relation pointing to the root object.
    6. View objects - ?
    7. Dynamic search objects - Used in advanced search, supports ranges and operators
    Could you please specify in which scenarios we have to go for Access Objects and Root Objects
    Thanks,
    Bujji

  • Error when calling a custom component in Web UI.

    Hello Experts ,
    We have  created a custom component for guided procedure in Web UI . When we link the custome component with the standard component for the home page ( WCC_SSV_HOME ) we found that custom controller for guided procedure works . We are navigating the guided procedure for search functioanlity and it works fine and shows the search result .
    But when we click on any of the searched objects say a Case , then links on that  Case is not working .
    For example , we are getting the below  error :
    Exception Class  CX_BSP_WD_INCORRECT_IMPLEMENT - Define NavigationalLink BP for source view ZSOA.MainWindow
    Any inputs on this is higly apreciated.
    Regards
    Vinayak

    Hi Vinayak,
    I am assuming that the implementation of the navigation from the search result to the object details is not working.
    The error you mentioned pointed me that you do not have the navigation link. I don't know what is missing so I am giving you the full details please cross check what you missed.
    1> create and eventhandler e.g. EH_ONSINGLESELECTION
    2> create an outbound plug in your view - this plug is used for the navigation to the target of the hyperlink.
    3> create an outbound plug in the window.
    Define the navigation link whth the name according to the string you have put in the event handler in the search component e.g. SINGLESELECTION
    as source define the component usage for the search. as target define the component usage of header    -> this will handle the connection from search to the header.
    Hope this will help.
    Thanks,
    Vikash.

  • Issue in custom component in custom timecard layout-OTL

    Hi,
    I have created a custom layout based on seeded layout.Added new custom component Dept reference field to the sedded layout.
    When trying to save the timecard template including dept reference field completed.The saved timecard template is dropping Dept reference filed.therefore,it is also dropped from the exported/downloaded .csv file.
    code details:
    BEGIN HXC_LAYOUT_COMPONENTS
    "US Projects Alternate Timecard Layout-Dep field"
    OWNER = "CUSTOM"
    SEQUENCE = "226"
    COMPONENT_DEFINITION = "TEXT_FIELD"
    RENDER_TYPE = "WEB"
    PARENT_COMPONENT="US Projects Alternate Timecard Layout-Day Scope Building blocks for worker timecard matrix"
    REGION_CODE="HXC_CUI_TIMECARD"
    REGION_CODE_APP_SHORT_NAME="HXC"
    ATTRIBUTE_CODE="DEPT_REF"
    ATTRIBUTE_CODE_APP_SHORT_NAME="HXC"
    LAST_UPDATE_DATE = "2004/05/23"
    BEGIN HXC_LAYOUT_COMP_QUALIFIERS
    "US Projects Alternate Timecard Layout-Dep field"
    OWNER = "CUSTOM"
    QUALIFIER_ATTRIBUTE_CATEGORY = "TEXT_FIELD"
    QUALIFIER_ATTRIBUTE1 = "N"
    QUALIFIER_ATTRIBUTE2 = "N"
    QUALIFIER_ATTRIBUTE3 = "5"
    QUALIFIER_ATTRIBUTE4 = "1"
    QUALIFIER_ATTRIBUTE5 = "30"
    QUALIFIER_ATTRIBUTE18 = "EXCLUDE"
    QUALIFIER_ATTRIBUTE19 = "|TEMPLATE|CSV|"
    QUALIFIER_ATTRIBUTE20 = "N"
    QUALIFIER_ATTRIBUTE21 = "Y"
    QUALIFIER_ATTRIBUTE22 = "L"
    QUALIFIER_ATTRIBUTE25 = "FLEX"
    QUALIFIER_ATTRIBUTE26 = "HRP"
    QUALIFIER_ATTRIBUTE27 = "Attribute3"
    LAST_UPDATE_DATE = "2004/05/23"
    END HXC_LAYOUT_COMP_QUALIFIERS
    END HXC_LAYOUT_COMPONENTS
    Please help me in this regard....
    Thanks
    Sri...

    Did you update the export layout too and added that to preferences?
    --Shiv                                                                                                                                                                                   

  • How a custom component is called when we install a custom component in UCM.

    How a custom component is called when we install a custom component in UCM.
    On what event the component services will be activated and called.
    Suppose i create a Custom service name MULTIPLECHECKIN then this service will be called on what event and where it will be defined to call.

    Saurabh,
    the code is packed in the component (see component\Security Filter\java\Security Filter\ModifyAttributesFilter.java - the first Security Filter is the component name, the other Security Filter is the Java package name).
    What is important:
    - your class must implement the FilterImplementor interface (you will need UCM standard classes - server.zip in your classpath) and its doFilter method
    How the filter is executed?
    - actually, in this case you don't need any new service - you can use the standard 'hook', which is provided by standard checkin services
    - in Component Wizard create a new component, add your compiled class to it (make sure you follow the rules not to end up in classpath issues)
    - in Component Wizard click the 'Java Code' tab. Here you can add a Custom filter called validateCheckinData, which is executed by standard checkin services. If you parametrize the filter to call your class created above, you are done.
    'Working with Content Components' manual (e.g. here: http://download.oracle.com/docs/cd/E10316_01/cs/cs_doc_10/documentation/developer/using_components_10en.pdf) can give you a basic picture. A better resource is Bex Huff's book - I would recommend you to get it, because it has a step-by-step HelloWorld example which can guide you through Component Wizard. I could also send you my own component (send me an email at [email protected]) which implements a filter for user quotas, so you just need to "replace classes".
    As for the other half of your task, searching for the file in the database server will work only if you use database as your storage (ie. install and configure File Store Provider component accordingly). Of course, you could do a search for file in this case - just consider that you will be comparing two BLOBs rather than two relatively short check-sums (most likely strings or arrays of bytes). Besides, it will not work if you use filesystem as your storage.
    Jiri

  • Custom component property value handling at run time

    I would like to develop simple custom component which has three properties PROP1, PROP2 & RESULT . These parameters are bound to excel sheet cells as follows..
    cell A1 connected to PROP1
    cell A2 connected to PROP2 and
    cell A3 connected to RESULT.
    In excel A1 cell has excel formula set as =IF(A2<5,10,0).
    Custom component would be simple button display at runtime and on click of the same, I would like to perform following actions in sequence with N number of times.
    1. First push any random number to PROP2. (which is simple task, I believe)
    2. Pick new value of PROP1 which is changed due to existance of excel formula (+ using dispatchevent I could able to pass value to excel cell A2. But not able to read new value of PROP1+)
    3. check new PROP1 value equal to 10. If it is 10 then count it otherwise again push new random value to PROP2.
    4. Continue step 1 to 3 till N number of times. and finally
    4. Push number of counts for PROP1 value 10 to RESULT parameter.
    All the parameters are bindable (getter/setter with [Bindable]) in Flex component application and flex propertysheet application use binding ID to bind with cell address. with binding direction BOTH and SINGLETON
    Here is flex function code which triggered at button click.
    public function test002():void {
    while ( N < 100)
      this.PROP2 = Math.round(Math.random()*1000);
      dispatchEvent(new PropertyChangeEvent(PropertyChangeEvent.PROPERTY_CHANGE, false, false, PropertyChangeEventKind.UPDATE, "PROP2", null, PROP2, this));
         if (this.PROP1 == 10)
          cnt++;
       this.RESULT = cnt;
    My observations are as follows.
    - new push of value to PROP2 get reflected to excel A2 when button click event is over, not at the time of while loop process execution.
    - Also I observed PROP1 value never changes and it is the value which is recorded just before button click event of component at run time and remain the same till button click event is over.
    - Further to this I notice as click event is over, new value of PROP2 reflected in cell A2 and change value (if it passes IF formula of excel ) in A1 as well. Next button click action takes these new A1 and A2 values in consideration and process the function "test002".
    I would like to understand possibility of custom component event execution process, which can able to pass as well as read value from component parameters to underlying excel with changes due to excel formula existance.  If it is not limitations (If so) what is the set of commands which can be helpful to achieve this. I appreciate if anybody explain typical event execution required in such scenarios with some actionscript code directions.
    Thanks
    Sandesh
    Edited by: Sandesh Darne on Feb 8, 2010 11:48 AM
    Edited by: Sandesh Darne on Feb 10, 2010 5:23 AM

    Marton,
    I have tried your solution. It works well immediately after xcelsius dashboard get displayed or preview. It does not wait click event to happen. So I modified further by adding one switch ( "switch001" in code piece shown below) to control iteration by click event. That stops running of iteration immediate after dashboard display.
    In order to see iteration I have to click twice on button. First click does send "frm" parameter value to excel and excel formula operates. The excel formula result send back to component via SETTER of "frmResult" . But it stops over there. If I click second time the iteration starts for 100 times.
    Also I try to export this to PDF. PDF file get generated. If I try to open PDF file it raise error.
    My code is attached here.
    "frm" is the parameter that sends random number to excel.
    "frmResult" parameter receives excel formula output and send it back to component.
    "test()" function operate on button click event and set switch001 and then calls "Calc" function for iterations.
    MXML code..........
      <mx:VBox>
           <mx:TextInput id="frmResultLabel" width="100" />
           <mx:Button label="test..." click="test()"/>
      </mx:VBox>
    Actionscript code
    public var cnt:int;
              public var N:int = 0;
              public var sum:int = 0;
              public var switch001:Boolean = false;
             public function test():void {
                   N = 0;
                   sum = 0;
                   switch001 = true;
              public function Calc():void {
              if (switch001 == true)
                if (N < 100)
                    this.frm = Math.round(Math.random() * 1000);
                else if (N == 100)  // return the result
                     this.frmResult = sum;
                     // Label component use to display frm and frmResult values at runtime
                     frmResultLabel.text = sum.toString() + ">" + this.frm + ">" + this.frmResult;
                 N++;
              [Bindable]
              private var _frm:int;
              private var _frmChanged:Boolean = true;
              [Bindable]
              public function get frm():int
                   return _frm;
              public function set frm(value:int):void
                   //if (value == null)  value = 0;
                   if (_frm != value)
                        _frm = value;
                        _frmChanged = true;
                        invalidateProperties();
              override protected function commitProperties():void
                 super.commitProperties();
                 if (_frmResultChanged == true)
                        // start the cycle again by generating a new random number,
                        // or write out the result
                        Calc();

  • PPR on custom component

    I have a custom component for calendar. When invoking PPR on the component it refreshes the entire contents of the page and the custom component doesn't work properly after that.
    If I manually do full a page refresh then the component works properly.
    There is a thread with a similar problem was resolved Re: PPR on custom component?
    In above thread the solution was to add below in the custom component class.
    @Override
    protected FacesBean.Type getBeanType()
    return TYPE;
    I do have this code in my custom component class but may be I am missing something else. Does anyone have a suggestion of how to make this work? I'd appreciate your help a lot.

    Yes, I've seen that page on Trinidad. It was helpful, but it seems it was mostly about using PPR, not about building it into a custom component. The one part that did talk about custom components was this, near the end:
    "Finally, if you're implementing a custom component, you aren't extending the Trinidad UIXComponentBase base class or one of its subclasses, and you want to support partialTriggers, you'll need to use addPartialTriggerListeners(). If you deliver events, and you want to support being the target of partialTriggers, you'll need to use partialUpdateNotify(). "
    Then it gives code snippets for each of those. In my case, I am extending UIXComponentBase, and I am including this code, and I know addPartialTriggerListeners gets called, but my component still doesn't get the updated data. If I right-click the page and select Refresh, it redraws correctly, and other components that have partial-triggers on the same component I do, do get the update properly. So I must be missing something.
    Also, where can I get the open source of the components from? I haven't found anywhere to download them from. Can you point me at them?

  • AddChild Not working in a loop with custom component

    Hi,
    I have a custom component 'form component'
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Form xmlns:mx="http://www.adobe.com/2006/mxml" width="100%" height="100%">
        <mx:Script>
            <![CDATA[
                import mx.controls.Alert;
                import flash.net.navigateToURL;
                public var documentName:String;
                public var documentLocation:String;
                public var documentDescription:String;
                public var documentLevel:String;
                private function openLink():void
                    var urlRequest:URLRequest=new URLRequest(documentLocation);
                    navigateToURL(urlRequest,"_blank");
            ]]>
        </mx:Script>
        <mx:FormItem width="100%" height="100%" paddingRight="10" borderThickness="10">
            <mx:VBox width="100%" cornerRadius="10" borderThickness="2" borderStyle="solid" borderColor="#D5D2D2">
                <mx:ApplicationControlBar width="100%"  fillAlphas="[1.0, 0.52]" fillColors="[#FFFFFF, #B3CDD9]">
                    <mx:LinkButton id="eachDocumentName" label="Name" click="openLink()" textAlign="left" width="50%" />
                    <mx:Label id="eachDocumentLevel" text="Level" textAlign="right" width="50%"/>
                </mx:ApplicationControlBar>
                <mx:Label id="eachDocumentDescription" width="100%" text="Description" paddingTop="5"  paddingLeft="10"/>
                <mx:Label height="10" width="100%" />
            </mx:VBox>
        </mx:FormItem>
    </mx:Form>
    and I Want to add this component inside a VBox for a loop dynamically like
    Script Code:
    private function showDocuments(event:ResultEvent):void
                    var documentList:ArrayCollection=event.result.root.documents.document;
                    for(var i:int=0;i<documentList.length;i++)
                        var documentName:String=documentList[i].name.toString();
                        var documentDescription:String=documentList[i].description.toString();
                        var documentLevel:String=documentList[i].level.toString();
                        var documentLocation:String=documentList[i].location.toString();
                        createChildForFilePanel(documentName,documentLevel,documentDescription,documentLocation);
                private function createChildForFilePanel(documentName:String,documentLevel:String,documentDescription:Stri ng,documentLocation:String):void
                        Alert.show("function Called");
                        var documentListing:DocumentListing=new DocumentListing();
                        documentListing.percentWidth=100;
                        documentListing.percentHeight=100;
                        documentListing.eachDocumentName.label=documentName;
                        documentListing.eachDocumentLevel.text=documentLevel;
                        documentListing.eachDocumentDescription.text=documentDescription;
                        documentListing.documentLocation=documentLocation;
                        filePanel.addChild(documentListing);
    MX: code
      <mx:VBox id="filePanel" label="File Content" width="100%" height="100%" borderThickness="0" >
          </mx:VBox>
    This is actually Not working.. Am I doing anything wrong. I have included the component in the namespace..
    Thanks In Advance,
    Piyush

    Its working now. The Solution to it what I found was whatever you are Adding To the Parent Component. The Parent Component should be created in the action script.
    Worked for me :-)
    Thanks,
    Piyush

  • Access data in custom component.

    Hi Everyone,
                    I am new to Flex soo pardon me if my questions are quite basic. I have searched a lot before posting here, might be I was not looking in the right direction. Please redirect me to the path that leads to the solution of the problem. I really appreciate any help that I can get.
    I'm followiing this video tutorial.
    http://www.gotoandlearn.com/play.php?id=100
    All was going fine, until the tutor wanted to add custom component in the application. He added the HBox which I couldn't find in Flash Builder  4.6 so I added HGroup instead in my new component. Now when I want to use the data that was fetched in the parent component in custom component it gives me error. Here is the code and their file names.
    File: SearchHomeView.mxml
    <?xml version="1.0" encoding="utf-8"?>
    <s:View xmlns:fx="http://ns.adobe.com/mxml/2009"
            xmlns:s="library://ns.adobe.com/flex/spark" title="Twitter Search">
        <fx:Declarations>
            <!-- Place non-visual elements (e.g., services, value objects) here -->
            <s:HTTPService result="onResult(event)" id="service" url="http://search.twitter.com/search.atom?q=adobe">
            </s:HTTPService>
        </fx:Declarations>
        <fx:Script>
            <![CDATA[
                import flash.utils.flash_proxy;
                import mx.collections.ArrayCollection;
                import mx.rpc.events.ResultEvent;
                [Bindable]
                private var ac:ArrayCollection;
                private function onResult(event:ResultEvent):void
                    ac = event.result.feed.entry as ArrayCollection;
                    trace(data);
                    trace(ac);
                private function doSearch(event:MouseEvent):void
                    //service.url = "http://search.twitter.com/search.atom?q=" + tearch.text;
                    service.url = "http://search.twitter.com/search.atom?q=adobe";
                    service.send();
            ]]>
        </fx:Script>
        <s:TextInput x="25" y="26" width="146" id="tearch"/>
        <s:Button x="224" y="26" height="33" label="Search" click="doSearch(event)" />
        <s:List dataProvider="{ac}" itemRenderer="tweet" x="25" y="92" width="274" height="278"></s:List>
    </s:View>
    File: tweet.mxml
    <?xml version="1.0" encoding="utf-8"?>
    <s:HGroup xmlns:fx="http://ns.adobe.com/mxml/2009"
              xmlns:s="library://ns.adobe.com/flex/spark" width="400" height="300">
        <fx:Declarations>
            <!-- Place non-visual elements (e.g., services, value objects) here -->
        </fx:Declarations>
        <s:Image width="50" height="50" source="{parentDocument.data.link.getItemAt('1').href}">
        </s:Image>
        <s:TextBase width="100%" text="">
        </s:TextBase>
    </s:HGroup>
    When I use source to be source="{parentDocument.data.link.getItemAt('1').href} ... it removes the error, but displays nothing on the resulting app.
    When I use source to be source="{data.link[1].href} ... it gives the error,
    Multiple markers at this line:
    -1120: Access of undefined property data.
    -parentDocument
    What needs to be done to use the item renderer right in custom component ? Please tell me the solution to it... I'm stuck on it for quite a few time.
    Thanks
    Bilal Ahmad

    Hello Ravi,
    one option is the create a public attribute to share your value note data with other components.
    Another option is a function group with two function modules "SET_" and "GET_".
    I´m sure one of the webclient UI Gurus here in this forum could share less "dirty" ways with you.
    Kind regards
    Manfred

  • Can I import a custom component from Flash 8 into Flex?

    'm creating a custom Flash Video Playback component in Flash
    8 using AS2. I understand that I cannot import this to Flex as
    stated in Livedocs: "You can use SWC files created in Flash 8 only
    for skinning, not as components. Until the next version of Flash is
    released, you can only use SWC files created in Flex 2 as
    components."
    But now that Flash 8 supports AS3 with the new Adobe Labs
    add-on, if I create the custom component using AS3 in Flash 8, can
    I then import it and use it in Flex 2.0.1?
    Any help is appreciated,
    Thanks!

    I was going through my libraries trying to find the quick test I did when I was dabbling with the kit and I can't find it anywhere at all.
    If I recall this was the pdf that I read to get it to work properly with CS3 and Flex 3 I don't know if you have read it already or if it will help, but it is the only thing I know for sure helped with the process.
    http://download.macromedia.com/pub/labs/flex/3/flexbuilder3_componentkit_docs_121207.pdf

  • UI delegate for a custom component

    Hello folks,
    I am trying to write (as said in the subject) a UI delegate for a custom component. I found the following in a Java FAQ (http://www.mindspring.com/~scdrye/java/faq.html#plaf_delegate):
    8.3. How do I create a UI delegate for my custom component?
    Have your component extend from JComponent (or a descendant of JComponent). Create a subclass of ComponentUI for your custom component, overriding at least the createUI() and paint() methods. To enable the new UI, override four methods of your JComponent subclass:
    public class MyComponent extends JComponent {
    public void updateUI() {
    setUI((MyComponentUI)UIManager.getUI(this));
    public void setUI(MyComponent newUI) {
    super.setUI(newUI);
    public MyComponentUI getUI() {
    return (MyComponentUI)ui;
    public String getUIClassID() {
    return "MyComponentUI";
    Well, it turns out that this is not enough. I also had to add during application start (just before initComponents()) the following:
    UIManager.put(uiClassID, uiClassName);
    to avoid exceptions during start of the program.
    Well, now my component is painted (paintComponent()) is called, but the paint() method in my new UI delegate class is not called when the application starts.
    It just gets called when I explicitily (in this case, using a menu item) change the L&F of the application.
    If this informatio is not enough, I can add some excerpts of my code for the ease of understanding!!
    Thanks a lot!

    If I code a new custom component (extending JComponent, or extending the UI delegate of a standard component) and pretend it to be laf aware then I must create the corresponding UI delegate for each laf, like it happens to be with standard swing components. But I'm not sure it is feasible to create the UI delegates for all unknown existing custom lafs.You are right, this is never going to work. I suggest if you want to make your custom component look & feel aware, you design the way it displays around the l & f of other components that are part of j2se and have l&f implementations.
    http://download.oracle.com/javase/7/docs/api/javax/swing/plaf/ComponentUI.html
    There are instructions here:
    http://download.oracle.com/javase/7/docs/api/javax/swing/LookAndFeel.html
    >
    On the other side, if I create a custom laf then I will also create a custom UI delegate for each standard component, but I can not create UI delegate for all unknown existing custom components.
    The point here is that standard components and standard lafs are universally known, while custom components (or custom ui delegates) and custom lafs are not.
    So the question is: How does a swing developer deal with the case of a new custom component that will be used in an unknown custom laf?
    For instance:
    1. Custom text UI delegate for dealing with styled documents in JTextField. See {thread:id=2284487}.
    2. JTabbedPane with custom UI delegate that paints no tab if the component only contains one tab.
    In both cases I need a UI delegate for each known laf, but what happens if the application is using a laf that certainly will not be aware of this custom functionally?
    Thank you!

  • Change base view state from a custom component

    I'm pretty new to flex and I'm having a small issue in change the view state from a component.
    My Application have 2 custom components called userlogin and main menu. In the main application page I have userlogin component in one state and the main menu component in another. I'm trying to change the state if the login in successful from user login to main menu. I have the following function written inside the login component.
    private function IsUserLoggedIn(evt:ResultEvent):void
                    if (evt.result.islogin.toString() == "true")
                        currentState = "MainMenu";
                    else
                        Alert.show("Login failed, please try again.", "Login Failed");
    This code worked when I had all the controls in the main page. But then I created components and included them in to components and now when the login is success, its giving the following error.
    ArgumentError: Undefined state 'MainMenu'.
        at mx.core::UIComponent/getState()[E:\dev\4.0.0\frameworks\projects\framework\src\mx\core\UI Component.as:9908]
        at mx.core::UIComponent/findCommonBaseState()[E:\dev\4.0.0\frameworks\projects\framework\src \mx\core\UIComponent.as:9928]
        at mx.core::UIComponent/commitCurrentState()[E:\dev\4.0.0\frameworks\projects\framework\src\ mx\core\UIComponent.as:9750]
        at mx.core::UIComponent/setCurrentState()[E:\dev\4.0.0\frameworks\projects\framework\src\mx\ core\UIComponent.as:9701]
        at mx.core::UIComponent/set currentState()[E:\dev\4.0.0\frameworks\projects\framework\src\mx\core\UIComponent.as:6087 ]
        at components::UserLoginForm/__btnSubmit_click()[C:\Projects\WarrantyAutomation\src\componen ts\UserLoginForm.mxml:60]
    I'm sure this has something to do with accessing the states from a custom component, but I do not know how to change the state to the main menu. Please help me with this. Any help is greatly appriciated.

    Hi dasun1981,
    private function IsUserLoggedIn(evt:ResultEvent):void
                    if (evt.result.islogin.toString() == "true")
                        currentState = "MainMenu";
                    else
                        Alert.show("Login failed, please try again.", "Login Failed");
    If I am right the above function is in your userlogin component and the two components "userlogincomponent" and "maincomponent" are in main application file and the states were also defined in main application file.
    But in the function above the currentState refers to the state of the userlogin component and not the main application ...but the states are defined in main application file...that's the reason why the exception was thrown...
    Instead you replace the line in the above function with the below line:
    Application.application.currentState = "MainMenu";
    Please mark it as answer if it helped you.
    Thanks,
    Bhasker Chari

  • My custom component not clickable

    Hi,
    I'm creating custom component and when I add it to page I can't click it. When I add it to the bottom of page, the parsys overlaps this component and when I add component behind my custom component, it overlaps it too which means I can't edit/delete my cust. component. What am I doing wrong? Here is the code
    <%@include file="/libs/foundation/global.jsp"%>
    <%@page import="com.day.text.Text" %>
    <%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %><%
    String home = Text.getAbsoluteParent(currentPage.getPath(), 2);
    %>
    <p>
    <div class="download">
    <div class="fl mr30">
      <cq:include path="download-file" resourceType="project20130820v01/components/component_008_vybrat-soubor" />
    </div>
    <div class="fl">
      <cq:include path="download-file2" resourceType="project20130820v01/components/component_008_vybrat-soubor" />
    </div>
    </div>
    </p>
    and properties are set to this
    I'm thankfull for any help.

    After some test, I found that overriding value property in my custom component cause this proplem.Why overriding value property cause this problem?

Maybe you are looking for