Fill listbox programmatically in ADF

Hello

This my code for listbox on my jsf page.

< af:selectOneListbox id = value = "#{backingBeanScope.RegWoComp.selectedItem"lstcatg"}" >

< af:selectItem id = value = "#{backingBeanScope.RegWoComp.selectItems"lstselect"}" / > "

< / af:selectOneListbox >

and my code to populate the listbox control

public String commandLink_action() {}

Add the code in the event here...

System.out.println ("image clicked");

If (selectItems == null) {}

System.out.println ("Method1");

selectItems = new ArrayList();

selectItems.add (new SelectItem(1,"abcd"));

selectItems.add (new SelectItem ("Value2", "label2"));

selectItems.add (new SelectItem ("Value3", "label3"));

}

Returns a null value.

}

private String selectedItem;

private list selectItems;

public String getSelectedItem() {}

System.out.println ("GetSelectedItem");

return the selectedItem;

}

{} public void setSelectedItem (String selectedItem)

System.out.println ("setselecteditem");

this.selectedItem = selectedItem;

}

public list getSelectItems() {}

System.out.println ("Method");

selectItems return;

}

in fact, I want to fill on the command button click event.

Will there be any error in the newspaper?

Why do you use scope of backing bean?

use like this-

and why are you using af:selectItem? If you have not enabled the shared above link?

Use instead of like this-

  

For more details - Blog of Ashish Awasthi (Jdev/ADF): fill the values programmatically in a body af:selectOneChoice ADF

Ashish

Tags: Java

Similar Questions

  • Programmatically create ADF Table and binding.

    Hello

    I create the table and the columns programmatically using richeTableau and RichColumn. But unable to fill in the data in the table cells.

    Here is an excerpt of the code used. I followed the specified discussion ADF of Create Table by program. but I am not able to work.kindly suggest to solve this problem.

    RicheTableau tblObj = new RichTable();

    TableValues = (ArrayList) getCompValue (wsValues, compId) list;  contains a list of the HashMap object.

    tblObj.setVar ("trow");

    tblObj.setId ("tblDBrd");

    for (int k = 0; k < tblColumns.length; k ++) {/ / tblColumns contains a list of name of column to display in the table}

    RichColumn tblColumn = new RichColumn();

    tblColumn.setVisible (true);

    tblColumn.setId ("col" + k);

    tblColumn.setHeaderText (tblColumns [k]);

    UI RichOutputText = new RichOutputText();

    ui.setId (compId + k);

    "{[String expression =" #{row [] "+ k +"] ['"+ tblColumns [k] +"] ' ']} ";   want to retrieve the value of #{rank [k] [columnname]}

    ui.setValueExpression ("value", getValueExpression (expression));

    addComponent (tblObj, tblColumn);

    addComponent (tblColumn, ui);

    }

    tableModel = new SortableModel (tableValues);

    tblObj.setValueExpression ("value", getValueExpression("#{backingBeanScope.dashboardBean.tableModel}"));

    Thanks in advance.

    Best regards

    Arun

    You need the table setValue. Take a look at these discussions: programmatically set another link to Table read-only ADF and http://stackoverflow.com/questions/22389813/change-the-displayed-value-in-adf-table to get a few first thoughts and feel free to come back if you get stuck somewhere.

  • Fill the programmatic view object during execution

    Hi all

    I have a requirement to switch between the three different data source during execution in a single page. The user interface and the field names are the same for these three cases, but data from various sources (queries).

    So, imagine that we have 3 objects in view which has implemented read-only (object request depending on the view) and we want to fill a display object at the main performance as a data source for my page.

    My idea is to use "Prgorammatic view object" for this data source and then fill dynamically the contents of one of the three objects view read-only based on a setting in the user's selection.

    First of all, I want to know if it is thin approach and if yes, then get some points on the implementation or any other sample.

    I found this example:

    http://techiecook.WordPress.com/2011/05/17/programmatically-populate-view-objects-in-Oracle-ADF/

    Thanks in advance,

    Nasser

    Hello

    It is more a case of use for Adaptive connections. See:https://blogs.oracle.com/groundside/entry/towards_ultra_reusability_for_adf

    You can use EL to change the name of the ViewObject that an iterator in ADF queries its data. If the switch is on the link layer and there is no need for programmatic view objects. Unlike in the article of the blog above, VO 3 exist in your case then you don't need to create on the fly. Just change the name of VO in the managed bean referenced

    Frank

  • Problem with authentication programmatically in ADF

    Hello
    I'm trying to implement programmatic authentication in ADF web application. I set up a custom authenticator of WebLogic (custom DBMS authenticator) in my WLS integrated and also the "Default authenticator" control indicator OPTIONAL. But the WLS attempts to authenticate by using the LDAP provider. Is what the LDAP authentication is in integrated WLS? Can you please show how to bypass authentication LDAP and fill subject authenticated using my custom DBMS authenticator?

    Kind regards
    Raman

    Hello

    1. your authentication provider, the first in the list
    2 put his flag to 'sufficient '.

    Also make sure that when you use the built-in server, you use the port number 7101 during the call to the WLS console

    Frank

  • How can you fill ListBox with channel group name dynamically?

    I built a GUI in the 'View' pane that acts as a large table of contents. At the top of the GUI, there is a list box I want to dynamically fill with Group channel names loaded in my data portal (internal data). I can't generate the necessary code to do this. Currently, I use a ListBox control. Can I use an EnumListBox instead?

    The purpose of the list box should allow fast loading data which must be analysed in several sheets (also in the part of 'View') for comparison side by side rather than drag and drop data into each individual record.

    Any help would be appreciated,

    Thank you

    ~ Nathan

    Attached is a screenshot of the GUI I hope it helps.

    Hey Nathan--

    Have we met yet?  Don't think that I will remember to see you post on the forums of tiara so far (or remember you I meet someone named Nathan in person recently).  Welcome to the forums of tiara!

    There are a few things that you need to change about your code snippet-

    1. The reason why you get the error "object required: ' [string: 'filename']' is because the Set command expects that the right side of an expression returns an object (you define your variable to)."  In your case, you return a string (the name of a group), not an object.  Simply remove the Set command.

    2. The ListBox.Items.Add () method requires two parameters - the first is the text of the item to insert in the list, and the second is a value to assign to this point (you can do single).

    As a result, to more directly match your code snippet to the labour code, follow these steps:

    Dim listNum, names
    We = 1 to GroupCount
    Name = GroupName (listNum)
    Call selectData.Items.Add (names, we)
    NEXT

    Note that you can also use object programming oriented with the data object that represents the data portal, it is easier for you to avoid remembering variables such as GroupCount and GroupName DIAdem (that's me):

    Dim listNum
    We = 1 to Data.Root.ChannelGroups.Count
    Dial selectData.Items.Add (Data.Root.ChannelGroups (listNum). Name, we)
    NEXT

    Your project is looking great - let us know how we can continue to help and keep us updated!

  • How to select and default hightlight the first line in a programmatic Table(ADF Table created based on a SortableModel) ADF.

    Hi all


    We use JDeveloper Studio Edition Version 12.1.3.0.0 and deployed on GlassFish Server Open Source Edition 3.1.2.2 (build 5) and connect to the SQLServer database.


    We created a table ADF programming related to a SortableModel created programmatically to a bean.


    We need to select and highlight the first row in the table just after making it to retrieve data based on the first line.


    We tried the based on the following thread: How to call the bean support just after JSFF / page fragment loads? and a few other posts online, but it does not work very well.


    W has created a hidden text in the bottom of the JSF model as follows:


    < af:table varStatus = "rowStat" Summary = "table" value = "#{pageFlowScope.crudBean.dynamicTable.collectionModel} '"

    Rows = "#{pageFlowScope.crudBean.dynamicTable.collectionModel.RowCount} '"

    contentDelivery = 'immediate' var = 'row' rendered = 'true '.

    Binding = "#{backingBeanScope.crudBackingBean.tasksTable} '"

    selectionListener = "#{backingBeanScope.crudBackingBean.customListener} '"

    "rowSelection ="single"id ="t1"partialTriggers =": pt_gr2 "columnStretching =" column: clmn0 ">

    < af:forEach items = "#{pageFlowScope.crudBean.dynamicTable.columnNames}" var = 'name' varStatus 'vs' = > "

    < af:column sortable = "true" sortProperty rowHeader = "#{name}" = "no style" headerText = "#{pageFlowScope.crudBean.dynamicTable.columnLabel [name]}" "

    inlineStyle = "width: 100px;"  ID = "clmn$ {vs.index}" >

    < af:activeOutputText value = "#{row [name]}" id = "aot1" / >

    < / af:column >

    < / af:forEach >

    < / af:table >

    ....


    < af:outputText id = "hiddenOutputTextId" visible = "false" value = "#{backingBeanScope.crudBackingBean.afterPageLoad} '"

    Binding="#{backingBeanScope.crudBackingBean.hiddenOutputText}"/ >

    And we have added the code to the bean to support below:

    public String getAfterPageLoad() {}

    If (!.) {AdfFacesContext.getCurrentInstance () .isPostback ()}

    selectFirstRowInTasksTable();

    }

    Return afterPageLoad;

    }

    public void selectFirstRowInTasksTable() {}

    try {}

    RKS RowKeySet = new RowKeySetImpl();

    RowKeySet rksEmpty = new RowKeySetImpl();

    Model CollectionModel = tasksTable.getValue ((CollectionModel));

    ROWCOUNT int = model.getRowCount ();

    If (rowcount > 0) {}

    model.setRowIndex (0);

    Key of the object = model.getRowKey ();

    RKS. Add (Key);

    tasksTable.setSelectedRowKeys (rks);

    SelectionEvent selectEvent =

    new SelectionEvent (tasksTable.getSelectedRowKeys (), rks, tasksTable);

    selectEvent.queue ();

    customListener (selectEvent); / / to retrieve data

    AdfFacesContext.getCurrentInstance () .addPartialTarget (tasksTable);

    }

    } catch (Exception e) {}

    }

    }

    I think that () selectEvent.queue; should work even without calling the customerListener, but it is not working in all cases.

    What is the problem in my code?



    Have you tried to bind property of 'selectedRowKeys' to selection configuration / bean there?

    Something like:

    public RowKeySet getSelectedRKS() {
        if (rks == null) {
            // make first record as selected
            // create RowKeySet and assign it to rks variable(where rks is variable defined in bean with some scope higher than request scope)
        }
        return rks;
    }
    

    Dario

  • How to add values to the Listbox in the ADF.

    Hello

    I have a listbox that is met when the user clicks an Add button then click on the Add button whenever the values are added.

    I have a textbox where the values are added

    < af:inputText

    label = "Categories".

    ID = "itcatg".

    contentStyle = "width: 100px".

    Binding = "#{viewScope.RegWoComp.CATG}" >

    < f: validator binding = "#{bindings." Categories.Validator} "/ >"

    < af:autoSuggestBehavior suggestedItems = ' #{bindings. " Categories.suggestedItems} "/ >"

    < / af:inputText >

    Add a button

    "< af:commandImageLink actionListener =" #{viewScope.RegWoComp.btnadd} "icon =" / plusimage.gif "id ="proud"/ >

    and you choose a listbox.

    < af:selectOneListbox id = "lstcatg" label = 'List of categories' partialTriggers = 'proud '.

    value = "#{viewScope.RegWoComp.lstboxcatg}" >

    < f: selectItems id = value="#{viewScope.RegWoComp.customList}"/ "lstselect1" >

    < / af:selectOneListbox >

    managed code the bean to populate the listbox control

    The list < SelectItem > customList;

    public void setCustomList (list < SelectItem > customList)

    {

    this.customList = customList;

    }

    public list < SelectItem > getCustomList()

    {

    return customList;

    }

    public void btnadd (ActionEvent actionEvent)

    {

    customList = new ArrayList < SelectItem > ();

    customList.add (new SelectItem (catg.getValue));

    }

    That's when I click the button remove new value is inserted but the values are not added. I tried to make a method from arraylist and then by calling the Add method, but then also the values are not attached.

    This is because you have an initialization list

    Declare your list like this

    List customList = new ArrayList();

    Instead of

    List customList;


    Ashish

  • Executes a binding programmatically query ADF masters back are not complete details

    Hello

    We work with jdev 11.1.2.4.

    We have a "master" view with a few links.

    When I run the query on the main view I get the master and do not get the 'details' ranks. I give the floor to the "executeWithParams" of the bean to manage.

    We use this way because we are inside a taskflow, and it was to find us a solution. (see link http://matteoformica.blogspot.co.il/2014/02/executing-operation-binding.html)

    When I call it first time, it works and it fulfills all of the records to display the links, but the second time (for example, after his return to the previous page and call the query again, I only get the records of the main view)

    It's the syntax I use:

    JUFormBinding fb =

    (JUFormBinding) JSFUtils.resolveExpression("#{data.com_malam_payroll4Web_viewController_CandidatesInTakeFormPageDef}");

    OperationBinding opb = fb.getOperationBinding("ExecuteWithParams90001");

    opb.getParamsMap () .put ("officeNumBV", officeNum);

    opb.getParamsMap () .put ("idNumBV", idNum);

    opb.getParamsMap () .put ("positionNumBV", positionNum);

    Object result = opb.execute ();

    Can anyone help?

    If it worked for you, please indicate your question as "answered".

  • Fill ComboBox programmatically by a method

    I'm trying to populate a combobox in a method. However my drop-down list box is empty. Is there a way to update the dataProvider of the combobox?

    Here is my code,

    Thank you

    ---------------------------

    <? XML version = "1.0" encoding = "utf-8"? >
    < mx:Application
    ' xmlns:mx = ' http://www.Adobe.com/2006/MXML "
    styleName = "plain".
    Initialize = "init ()" >

    < mx:Script >
    <! [CDATA]

    Import mx.controls.Alert;
    Import mx.rpc.AsyncResponder;
    Import mx.collections.ArrayCollection;

    [Bindable]
    public var myArray:Array;

    private function init (): void
    {

    myArray.push ("one");
    myArray.push ("two");

    }
    []] >
    < / mx:Script >


    < mx:ComboBox id = "QueryComboBox" dataProvider = "{myArray}" / >

    < / mx:Application >

    You must use an ArrayCollection collection for the dataProvider:

    var myAC:ArrayCollection = new ArrayCollection (myArray);

    If this post answers your question or assistance, please mark it as such.

    Greg Lafrance - Flex 2 and 3 certified ACE

    www.ChikaraDev.com

    Flex / development, training, AIR and Support Services

  • strange behavior of the listbox

    I have a listbox that is filled from the data in a table.  When new data are added to the view is forced into a window PopUp.  It is also the initial view of the application.  When the application starts the listbox is not populate.  After that I have add an element to the table from a PopUp window and push the view at the first sight, that the list appears with the new data.  If I take the line

    var myTransStringtring = data.toString ();

    Code of the list box loads when the application starts as it should.  I don't know why this line of code is causing the problem.  The list box must load with code or without it.  Here's the complete code:

    protected function view2_viewActivateHandler(event:ViewNavigatorEvent):void
    {
                    
    var myTransStringtring = data.toString ();
                    
    dbConnection varQLConnection = new SQLConnection;
                    
    var embededSessionDB:File = File.documentsDirectory.resolvePath ("myLists.db");
    var writeSessionDB:File = File.documentsDirectory.resolvePath ("myLists.db");
    If there is no such thing as a database writable, we then copy in the app folder so this writteable
    If (! writeSessionDB.exists)
    {
    embededSessionDB.copyTo (writeSessionDB);
    }
                    
    var dbFile:File = writeSessionDB;
    Try
    {
    dbConnection.open (dbFile, SQLMode.UPDATE);
    trace ("the database opened successfully");
    }
    catch (errorQLError)
    {
    trace ("error message:", error.message);
    trace ("details:", error.details);
    }
                    
    stmt.sqlConnection = dbConnection;

    stmt. Text = ("SELECT Nom_liste FROM the list ORDER BY Nom_liste");
    stmt. Execute();
                    
    Table of results: var = stmt.getResult () .data;
        
    var myAC:ArrayCollection = new ArrayCollection collection;
                    
    myAC.removeAll ();
                        
    for each (var objobject result)
    {
    myAC.addItem (obj.list_name);
                        
    }
                    
    myAC.refresh ();
    dbConnection.close ();
    myLists.dataProvider = myAC;
    myLists.selectedItem = myTransString;
    }

    Neil

    I thought about it.

    The line had to be moved under the fill listbox.

    myAC.refresh ();
    dbConnection.close ();
    myLists.dataProvider = myAC;
    var myTransStringtring = data.toString ();
    myLists.selectedItem = myTransString;

    Neil

  • ScriptUI: How update the values from Listbox? (CC2014)

    Is there a way to update item listbox that filled with the elements of the array JS. If I push more items in the table, how do I re - make in ScriptUI? Is there any way to do this.

    I know there are average just to add items to the listbox as in PDF of Peter Kahrel. But it's not so dynamic:

    var w = new Window ("dialog");
    var myList = w.add ("listbox", undefined, ["one", "two", "three"]);
    var b = w.add ("button", undefined, "Add");
    b.onClick = function () {myList.add ("item", "zero", 0)}
    w.show ();
    

    What would you say if I wan't to update the listbox when I changed my paintings, as below:

    // Create example array
    var testArr = ['item1', 'item2']
    $.writeln(testArr.length);
    
    startGUI();
    function startGUI() {
        
        // Window
        var win = new Window( "palette", script_name, undefined, { resizeable:true } );
        win.orientation = "column";
        win.alignChildren = ["fill", "fill"];
        
        // Listbox
        var myListbox = win.add ("listbox", undefined, testArr,  
            {  
            numberOfColumns: 1,  
            showHeaders: true,  
            columnTitles: ['Name']
        });
    
        // Add Item To Array
        var addItem = win.add("button", undefined, "Add Item");
        addItem.onClick = function() {   
            testArr.push ('item3');
            $.writeln(testArr.length);
        }  
    
        // Quit BTN
        win.quitBtn = win.add("button", undefined, "Close");
        win.quitBtn.onClick = function() {   
            win.close();   
        }
    
        win.show();
    }
    

    There may be some update on ScriptUI funtion. I tried to look for the solution without success. Any help?

    I've updated your own script to show how I removed the listbox

    I added a group to host the listbox control, the purpose of the group is to be used as a placeholder (to add the new listbox to the right place) and easily get the listbox to delete

    // listboxEditFromJSArray.jsx - Sakari Niittymaa
    // https://forums.adobe.com/message/6785515 
    
    //#target illustrator 
    
    // Create example array
    var testArr = ['item1', 'item2', 'item3']; 
    
    startGUI();
    function startGUI() { 
    
        // Main Window
        var win = new Window( "palette", "Test Listbox", undefined, { resizeable:true } );
        win.orientation = "column";
        win.alignChildren = ["fill", "fill"]; 
    
        // Listbox Group
        var grpListbox = win.add('group');
        grpListbox.alignChildren = ['fill', 'fill'];
    
        var myListbox = addListBox (grpListbox, testArr); 
    
        // add ListBox
      function addListBox(container, testArr) {
            var listbox = container.add("listbox", undefined, testArr,
                {
                numberOfColumns: 1,
                showHeaders: true,
                columnTitles: ['Name']
            });
    
            return listbox;
      }
    
        // BTN: Add Items To Array
        var addItem = win.add("button", undefined, "Add Item");
        addItem.onClick = function() {
            testArr.push ('item' + (testArr.length + 1));
            grpListbox.remove(grpListbox.children[0]);
            myListbox = addListBox (grpListbox, testArr);
            win.layout.layout(true);
            //updateListboxArray(myListbox);
            //$.writeln (testArr.length + "  " + myListbox.items.length);
        } 
    
        // BTN: Remove Selected
        var removeSelectedItems = win.add("button", undefined, "Remove Selected");
        removeSelectedItems.onClick = function() {
            // Remove selected listbox item from array
            testArr.splice( myListbox.selection.index, 1 );
            updateListboxArray(myListbox);
        } 
    
        // BTN: Clear Listbox
        var removeAllItems = win.add("button", undefined, "Clear Listbox");
        removeAllItems.onClick = function() {
            // Clear the array
            testArr = [];
            updateListboxArray(myListbox);
        } 
    
        // Update listbox items
        function updateListboxArray(listbox) { 
    
            // Clear listbox first
            listbox.removeAll(); 
    
            // Create new listbox items from array
            var i = 0;
            while (listbox.items.length < testArr.length) {
                listbox.add ("item", testArr[i]);
                i++;
            }
        } 
    
        // Quit BTN
        win.quitBtn = win.add("button", undefined, "Close");
        win.quitBtn.onClick = function() {
            win.close();
        } 
    
        // Window Settings
        win.onResizing = function () { this.layout.resize(); };
        win.onShow = function () { win.layout.resize(); };
        win.center();
        win.show();
    }
    
  • Research of component

    I have a question, functions

    AdfPage.PAGE.findComponentByAbsoluteId(absolute expr) and AdfUIComponent.findComponent(expr)

    can only use in JavaScript? I mean they can be used in JavaBean?

    This method is used in Javasctipt, only to find that uicomponent to managed you can use

            FacesContext context = FacesContext.getCurrentInstance();
            UIComponent comp = context.getViewRoot().findComponent("ID");
    

    To check detailed information, this link too-

    Mert Caliskan weblog: Weblog of Mert Caliskan

    To access the ADF UI components programmatically

    ADF Faces - Find component

    To find UIComponent within a region taskFlow, check

    Java / Oracle SOA blog: find a UIComponent area of Flow Task ADF

    Hope this will help you

    Ashish

  • Search criteria Set AF:QuickQuery - jdev 11.1.2.3


    Hello:

    I use an AF:QuickQuery that works very well.  However, I have now a use case where I need pre-fill search programmatically.

    The AF:QuickQuery is based on the original Version used. I need set the search criteria for the currently connected user ID, then run the AF:QuickQuery to display the row for the user.  After the query is run, the fast query table should show only the line for the currently connected employee.

    The AF:QuickQuery has two headphones (I think) resemble what I need:

    QueryListener, which is the value #{bindings. ImplicitViewCriteriaQuery.processQuery} and

    QueryOperationListener which is empty

    What is the difference between these two headphones and who should I use?

    Does anyone have examples of java code or articles I should reference on how to do this?

    Thank you very much...

    Once a user gets to the page so they should only be able to see their records and not query for others?  It seems that maybe you should use a display with a variable binding criterion in the VO used rather than a quickQuery.

  • List box only one option of selection export Multiple

    Hi all

    I created my list box, helped several selections and send the interactive pdf.

    However when I pick it up and extract the data, I'll only get a selection in the csv file.

    Also I would like to automatically select all the entries in a list box. How would I do that?

    Thanks for the help. Have been roaming the Internet for an answer, I have not found what I still had.

    See you soon,.

    Larissa

    Hello

    Steve Walker is a good example of filler listboxes here: Automatic combo module

    Hope that helps,

    Niall

  • [ADF, JDev12.1.3] How 1) in order to avoid this af:table created from a VO istance automatically fill the box itself? (2) disable a button if the display: table is empty?

    Hallo,

    I would like to know how to avoid that an af:table created from a VO istance automatically fill the area itself.

    I need to fill programmatically after you click on the search button.

    Then I would turn off, and the button 'open file' if the af: table is empty or if af:table contains documents... enable how can achieve this?

    Thank you

    Federico

    I would like to know how to avoid that an af:table created from a VO istance automatically fill the area itself.

    I need to fill programmatically after you click on the search button.

    Use VO.executeEmptyRowSet () Andrejus Baranovskis Blog: Oracle ADF Tuning: prevention of the execution of the SQL query on the loading of the Page

    Then I would turn off, and the button 'open file' if the af: table is empty or if af:table contains documents... enable how can achieve this?

    Bind "disabled" property #{bindings.yourIterator.estimatedRowCount == 0}

    Dario

Maybe you are looking for

  • Firefox will not start even after uninstal and reinstal

    I was using Firefox normally. I shut it off for awhile then I would never open again. I uninstalled and reinstalled and it did not fix the problem. I deleted the program files and profile records and reinstalled again... same thing. When I run it, th

  • SD card change download location?

    Maybe I missed it, or it does not exist, but how do I change the download location by default on my external sd card?

  • Question of MacKeeper

    I went on a Facebook link a shared friend because he had seemed to be an entertaining article. (Lesson learned, do not click on links more. Fact sense to get rid of Facebook anyway). in any case, said link popped up a MacKeeper pop up. I knew immedia

  • Satellite L655-1EX - problem with Joystick driver

    Hello I bought a game controller, it's called "Final Fantasy XIV". The appropriate driver is [this | http://www.snakebyte-europe.com/en/products/pc/final-fantasyR-xiv-controller/downloads/].I downloaded the driver and installed it, but whenever I tri

  • Cisco linksys e1000

    How do I save or copy all entries on a flash usb drive memory router configuration? I have not configured the router me (out of town at the time of purchase). I already downloaded the manual for this router and I want to understand exactly what it (t