Retrieve the values of the executable (Dialog.Ask)

Hello world!

I have a situation where I have to ask the user a question according to the status of a remote object (sent to a web service).  This operation is performed within a Thread, so I can't directly use the Dialog.Ask () because it translates into the exception "Engine UI consulted without holding the lock of the event".  I used this code sample to get the dialog to the user

        synchronized(UiApplication.getEventLock()) {            Runnable push = new Runnable() {

                public void run() {                    Dialog.ask(message, choices, 0);                }

            };

            UiApplication.getUiApplication().invokeLater(push);        }

This work is nice, but I can't retrieve the result... And because it's in a thread, I don't know how I could get it... Can someone help me with this one?

Thank you!

You usually use

Synchronized (UiApplication.getEventLock ())

or

UiApplication.getUiApplication (.invokeLater)

There's no value in using both at the same time.

In this case, the Dialog.ask returns an int, that indicates the result.  The doc of the API:

Returns:
The selection of your choice (not the index) value, as must be returned by getSelectedValue(). For example, CANCEL, OK or DELETE are among the possible return values.

Thus, you can code something like:

int i = Dialog.ask (...);

Treat the i then returned.

Without doubt, you actually want to return the result in your calling Thread.  I don't know how "legal", it is, but you might be able to get away with:

selectedChoice int = - 1;

{Synchronized (UiApplication.getEventLock ())}
selectedChoice = Dialog.ask (.);

}

If you can't do that, then look to split the treatment at the time of questions and using a DialogClosedListener to the decision of the user process.  I don't know there are other options, just of can't think right now.

Tags: BlackBerry Developers

Similar Questions

  • Retrieve the value of Dialog.ask

    I am trying to write a function that will create a context menu using Dialog.ask and return the result of the dialog box to the calling Thread.  So far I have somethings like this:

    //display a pop-up "Yes or No" box and return true for yes, false for no
    public boolean ask(final String question){
        UiApplication.getUiApplication().invokeLater (new Runnable(){
                                                          public void run(){
                                                              int answer = Dialog.ask(Dialog.D_YES_NO, question, Dialog.NO);
                                                              if(answer == Dialog.YES){
                                                                  //somehow return true                                                          }
                                                              else{
                                                                  //somehow return false                                                          }
                                                       }});
    }
    

    I've seen a similar thread, but I didn't know how to use the solution.

    http://supportforums.BlackBerry.com/T5/Java-development/getting-values-back-from-runnable-dialog-ask...

    In short, how to use DialogClosedListener to retrieve the value of Dialog.ask to ?

    First of all, you probably want to use invokeAndWait so that the calling thread is blocked until the Runnable.run () ends. After that, one solution is to store the result of somewhere. For example, the subclass of the floor and add a field where you store the value (a more general concept of an executable that can return a value in J2SE is the future, but it is not available out of the box in J2ME). Once completed invokeAndWait, you can read this field. Alternatively, you may return the value by changing something in the outer class (one that contstructs the Runnable). For example,.

    final int[] result = new int[1];
    UiApplication.getUiApplication().invokeAndWait(new Runnable() {
      public void run() {
        result[0] = Dialog.ask(...);
      }
    });
    
    int choice = result[0];
    ...
    
  • Retrieve the value of the dialog box

    Hello

    I have a class that extends the dialog box. A few Radiobuttns are added. I want to get the value of the RadioButton selected the actual class of the screen, call the dialog box by clicking the Dialog.OK button. The code I tried is as follows:

    My class of the screen:

                    XXXDialog clScrn = new XXXDialog ();
                    if (clScrn.doModal() == Dialog.OK) {
    
                        // I click Ok, but this is never shown
                        Dialog.alert("Closed & here");
                        Dialog.alert("Selected = " + clScrn.getSelectedItem());
                    }
                    clScrn = null;
    

    The dialog class-

      public XXXDialog() {
            super(Dialog.D_OK, "Select Item", Dialog.OK, null, VERTICAL_SCROLL | VERTICAL_SCROLLBAR | Field.USE_ALL_WIDTH | Field.USE_ALL_HEIGHT);
            rbg = new RadioButtonGroup();
            rb1 = new RadioButtonField("One", rbg, false, Field.USE_ALL_WIDTH);
            rb2 = new RadioButtonField("Two", rbg, false, Field.USE_ALL_WIDTH);
    
            rb1.setChangeListener(this);
            rb2.setChangeListener(this);
    
            add(rb1);
            add(rb2);
        }
    
        public void fieldChanged(Field f, int context) {
    /*
    Actually, I want to know which field was clicked RadioButton or Ok button. If it is Ok, then I want to hide and return back to screen.
    */
    
            try {
                    RadioButtonField fd = (RadioButtonField) f;
                    item = fd.getLabel();
                    System.out.println("Selected = " + item);
            } catch (Exception e) {
            }
    
            try{
                ButtonField fd = (ButtonField) f;
                System.out.println("********* Button PRESSED = " + f);
                this.close();
            } catch (Exception e) {
            }
    
            System.out.println("*********** Field Count = " + f.getManager().getFieldCount() + " Index = " + f.getIndex());
        }
    
        public String getSelectedItem() {
            return item;
        }
    

    The XXXDialog class is in a separate file of java.

    Can anyone help me on what to do and how to achieve the goal.

    Thank you

    I found my solution. What I did is: -.

    In my main screen, I call the as dialog box

    clScrn.doModal ();

    Dialog.Alert (Come Back here");   I see this alert as soon as the dialog box is closed.

    In my class of dialogue, I have only the Ok button, dialog can be closed using the ESC key as I implemetned the code-

    Dialog box does not close on ESC
    {} public boolean keyChar (key char, int status, int time)
    Boolean retVal = false;
    {Switch (Key)}
    case Characters.ESCAPE:
    break;
    }
    Return retVal;
    }

    So now, there is no other means to close the exception, Ok button dialog box and I make sure that when Ok is clicked, 1 radiobutton is selected.

    Thank you all for the time and effort.

  • How to retrieve the values of character without using single quotes

    Hi all

    How to retrieve the values of character without the use of single quotes. Its Possible in Oracle SQL

    Please answer me...

    For example

    Is actual query-> Select * from employees where name like in("SCOTT", "JAMES", "ALBERT",...);

    I want to--> Select * from employees where name like(SCOTT, JAMES, ALBERT...); -without the use of single quotes.

    Why I need this application, I need to retrieve the records more than 200 employees in a select statement by using name in where clause.

    shagarmahabubjan wrote:

    Hi all

    How to retrieve the values of character without the use of single quotes. Its Possible in Oracle SQL

    Please answer me...

    For example

    Actual query is---> Select * from employees where name like in("SCOTT", "JAMES", "ALBERT",...);

    I want to---> Select * from employees where name like(SCOTT, JAMES, ALBERT...); -without the use of single quotes.

    Why I need this application, I need to retrieve the records more than 200 employees in a select statement by using name in where clause.

    In short... you can't.  The channels are channels, and SQL and PL languages dictate that the string literals are provided within single quotes.

    I don't see how trying to retrieve more than 200 records of employees in the select statement means that you must get rid of the quotes.

    Be clear in what you ask: Re: 2. How can I ask a question on the forums?

    and take note of the FAQ link davidp provided the solution "variable IN the list.

  • How to retrieve the values of a number of column by column in pl sql

    I wanted to know how can I retrieve the values of a column just in number and not the name of the column.

    user10989720 wrote:
    I need exactly this kind of thing.

    I am retrieving the name of the column from all_tab_columns and under this column name can I retrieve values using any kind of query sub.

    Select column_name
    from all_tab_columns
    where table_name = 'QUOTE_HEADERS_EXT' and
    column_id = 58

    You're still not understanding. You need to do if you want to get the values of the table dynamically.

    Either like this:

    SQL> create or replace type t_colval is table of varchar2(4000);
      2  /
    
    Type created.
    
    SQL> ed
    Wrote file afiedt.buf
    
      1  CREATE OR REPLACE FUNCTION get_column(p_sql IN VARCHAR2, p_column_no NUMBER) RETURN t_colval PIPELINED IS
      2    v_finaltxt  VARCHAR2(4000);
      3    v_v_val     VARCHAR2(4000);
      4    v_n_val     NUMBER;
      5    v_d_val     DATE;
      6    v_ret       NUMBER;
      7    c           NUMBER;
      8    d           NUMBER;
      9    col_cnt     INTEGER;
     10    f           BOOLEAN;
     11    rec_tab     DBMS_SQL.DESC_TAB;
     12    col_num     NUMBER;
     13  BEGIN
     14    c := DBMS_SQL.OPEN_CURSOR;
     15    DBMS_SQL.PARSE(c, p_sql, DBMS_SQL.NATIVE);
     16    d := DBMS_SQL.EXECUTE(c);
     17    DBMS_SQL.DESCRIBE_COLUMNS(c, col_cnt, rec_tab);
     18    FOR j in 1..col_cnt
     19    LOOP
     20      CASE rec_tab(j).col_type
     21        WHEN 1 THEN DBMS_SQL.DEFINE_COLUMN(c,j,v_v_val,2000);
     22        WHEN 2 THEN DBMS_SQL.DEFINE_COLUMN(c,j,v_n_val);
     23        WHEN 12 THEN DBMS_SQL.DEFINE_COLUMN(c,j,v_d_val);
     24      ELSE
     25        DBMS_SQL.DEFINE_COLUMN(c,j,v_v_val,2000);
     26      END CASE;
     27    END LOOP;
     28    LOOP
     29      v_ret := DBMS_SQL.FETCH_ROWS(c);
     30      EXIT WHEN v_ret = 0;
     31      v_finaltxt := NULL;
     32      CASE rec_tab(p_column_no).col_type
     33        WHEN 1 THEN DBMS_SQL.COLUMN_VALUE(c,p_column_no,v_v_val);
     34        WHEN 2 THEN DBMS_SQL.COLUMN_VALUE(c,p_column_no,v_n_val);
     35                    v_v_val := to_char(v_n_val);
     36        WHEN 12 THEN DBMS_SQL.COLUMN_VALUE(c,p_column_no,v_d_val);
     37                    v_v_val := to_char(v_d_val,'DD/MM/YYYY HH24:MI:SS');
     38      ELSE
     39        DBMS_SQL.COLUMN_VALUE(c,p_column_no,v_v_val);
     40      END CASE;
     41      PIPE ROW (v_v_val);
     42    END LOOP;
     43    DBMS_SQL.CLOSE_CURSOR(c);
     44* END;
    SQL> /
    
    Function created.
    
    SQL> select * from table(get_column('select * from emp',1));
    
    COLUMN_VALUE
    ---------------------------------------------------------------------------------------------------------------
    7369
    7499
    7521
    7566
    7654
    7698
    7782
    7788
    7839
    7844
    7876
    7900
    7902
    7934
    
    14 rows selected.
    
    SQL> select * from table(get_column('select * from emp',2));
    
    COLUMN_VALUE
    ---------------------------------------------------------------------------------------------------------------
    SMITH
    ALLEN
    WARD
    JONES
    MARTIN
    BLAKE
    CLARK
    SCOTT
    KING
    TURNER
    ADAMS
    JAMES
    FORD
    MILLER
    
    14 rows selected.
    
    SQL>
    

    Or like this:

    SQL> create or replace type t_colval is table of varchar2(4000);
      2  /
    
    Type created.
    
    SQL> ed
    Wrote file afiedt.buf
    
      1  CREATE OR REPLACE FUNCTION get_column(p_table IN VARCHAR2, p_column_no NUMBER) RETURN t_colval PIPELINED IS
      2    v_column_name VARCHAR2(30);
      3    v_rc          SYS_REFCURSOR;
      4    v_val         VARCHAR2(4000);
      5  BEGIN
      6    SELECT column_name
      7    INTO   v_column_name
      8    FROM   user_tab_columns
      9    WHERE  column_id = p_column_no
     10    AND    table_name = UPPER(p_table);
     11    OPEN v_rc FOR ('SELECT '||v_column_name||' FROM '||p_table);
     12    LOOP
     13      FETCH v_rc INTO v_val;
     14      EXIT WHEN v_rc%NOTFOUND;
     15      PIPE ROW(v_val);
     16    END LOOP;
     17    CLOSE v_rc;
     18* END;
    SQL> /
    
    Function created.
    
    SQL> select * from table(get_column('EMP',2));
    
    COLUMN_VALUE
    ----------------------------------------------------------------------------------------------------------------
    SMITH
    ALLEN
    WARD
    JONES
    MARTIN
    BLAKE
    CLARK
    SCOTT
    KING
    TURNER
    ADAMS
    JAMES
    FORD
    MILLER
    
    14 rows selected.
    
    SQL>
    
  • reactivate the confirmation dialog before executing applets

    I chose "[] do not ask again" when you are prompted to run the java applet. Now all the applets run without confirmation.
    How to restore the dialogue of confirmation for java applets?

    Already done, did not help.

    In any case, was to play with the settings, deleted all the cache in the browser and java and did the following:
    In java Control Panel:
    Security tab-> Certificates-> certificate trust-> user-> (breakdowns) tab set all.
    Advanced-> Security-> general-> unchecked tab "do not ask for a client certificate selection when there is no certificate or only one.

    In Firefox, about: config
    reset the default ' pref.advanced.javascript.disable_button.advanced' property.
    (Now I don't see this property more?)

    I don't really know, one that helped, but the confirmation dialog box appears now!

    Thanks for all the help.

  • Call Dialog.ask in the Thread Run method

    "in I want to call Dialog.alert and using following code but its exception to throw the wire.

    "Exception occurs java.lang.RuntimeException: pushModalScreen called by a thread of non-event."

    synchronized (Application.getEventLock ())

    {

    if (Dialog.ask ("catalog is obsolete. You want to keep it? ", choices, select, select [0])(==1)"

    {

    Run the required functionality

    }

    }

    pls help me

    I keep saying this, so forgive me of repeating myself, but:

    synchronized (Application.getEventLock ()) {}

    should only be used when nothing else will work for you or you make a very simple, very fast UI update.

    A Dialog.ask is not very fast!

    In this case, you have several options, but the most obvious solution is to ask the question before starting the Thread.  So, if that is your treatment

    Thread catUpdateThread = new Thread() {}

    public void run() {}

    Dialog.ask (...)

    Other treatments

    }

    }

    catUpdateThread.start ();

    What should do the same and works OK. :

    UiApplication.getUiApplication.invokelater (new Runnable() {}

    public void run() {}

    Dialog.ask (...)

    If (result == Yes) {}

    Thread catUpdateThread =...;

    catUpdateThread... Start();

    }

    }

    });

  • Does anyone know how to change the culmination of auto from 'no' to 'yes' in dialog.ask?

    No big deal here, I want to just my 'Yes' button, highlighted initially instead of the 'no' in the dialog.ask function. Anyone know how to change it? Thank you!

    Something like that?

    int choice = Dialog.ask (Dialog.D_YES_NO, "You want to stop downloading?", Dialog.NO);

  • How to store and retrieve long values in the store persistent

    Hello

    In my application I want to store and retrieve long values in the persistent store that I used with Longvector and all is well, but LongVector is supported for operating system > = 4.6

    I need to work my request in 4.5 also, can any one infrom me what are the other alternatives, I have to get my pls any abstract requirement...

    Vector v = new Vector();
    fill vector
    Long premierElement = (Long) v.firstElement ();
    myLong long = firstElement.longValue ();

  • Prevent a Dialog.ask beeing scrolled down on the launch

    Hello!

    I want to show a EULA (very long chain) in a Dialog.ask, but it scrolls down to the buttons when it is released. Is there a simple way to avoid that I can't find?

    Thank you!

    only focusable components allow to scroll.

    I had a similar problem while displaying a EULA. on top, it was very long, and the formatting is complex.

    I opted for the EULA, including in html format.

    in my UI I show accept, refuse, and display buttons.

    show the button opens the html code in the browser - with all the formatting done automatically.

    nobody reads the EULA anyway, and let the user scroll through miles of text if it does not intend to read is bad design.

  • [ADF, JDev12.1.3] SelectOneChoiche created from VO instance with 3 fields: how to retrieve the value of all the fields of the selected element?

    Hallo,

    I defined a VO with 3 fields (A, B and C) and I would like to create a SelectOneChoiche that shows only the field as options from this instance of VO.

    In a managed bean, I need to retrieve the values for all areas (A, B and C) of the item selected by the user.

    I started dragging the entire VO instance to UI to create a SelectOneChoiche (in which I have chosen to show only the to field).

    Then, I created a for the SOC ValueChangeListener read the values A, B and C of the selected element, but the only thing I've done is to get the displayed value:

    System.out.println((String) ((RichSelectOneChoice) FacesUtils.findComponent("MySoc")).getValue());
    

    You kindly help me?

    Thank you

    Federico

    Federico, sorry I didn't see your answer.

    As you use 12.1.3 you can do this more easily than the code that I posted before. You can use

    {} public void onCountrySelection (ValueChangeEvent valueChangeEvent)

    FacesContext will involve = FacesContext.getCurrentInstance ();

    Make sure that the selection change is processed and the current link lov line has the new selected line

    valueChangeEvent.getComponent () .processUpdates (contxt);

    BindingContext lBindingContext = BindingContext.getCurrent ();

    BindingContainer lBindingContainer = lBindingContext.getCurrentBindingsEntry ();

    List JUCtrlListBinding = lBindingContainer.get ("CountryId") (JUCtrlListBinding);

    the newindex in not necessary, but ok let's get it (must be equal to the CountryId, the pharmacokinetics of the binding of the lov

    String newindex = (String) valueChangeEvent.getNewValue ();

    get the selected value in the list that is the selected line of the binding of the lov

    Line lFromList = list.getSelectedValue () (line);

    now, we can get the attributes of the line of lov

    String s = (String) lFromList.getAttribute ("CountryId");

    System.out.println ("CountryId:" + s);

    String s2 = (String) lFromList.getAttribute ("CountryName");

    System.out.println ("CountryName:" + s2);

    BigDecimal s3 = lFromList.getAttribute("RegionId") (BigDecimal);

    System.out.println ("RegionId:" + s3.toString ());

    }

    The form that I use is based on the location of the HR DB schema table. The CountryId is configured in the view object to display a lov based on the campagneVoir. This view contains thre CountryId, CountryName and RegionId attributes.

    If you want to get to the attributes of an action listener you can use this code

    {} public void onGetSelectedCountryLov (ActionEvent actionEvent)

    BindingContext lBindingContext = BindingContext.getCurrent ();

    BindingContainer lBindingContainer = lBindingContext.getCurrentBindingsEntry ();

    List JUCtrlListBinding = lBindingContainer.get ("CountryId") (JUCtrlListBinding);

    get the selected value in the list that is the selected line of the binding of the lov

    Line lFromList = list.getSelectedValue () (line);

    now, we can get the attributes of the line of lov

    String s = (String) lFromList.getAttribute ("CountryId");

    System.out.println ("CountryId:" + s);

    String s2 = (String) lFromList.getAttribute ("CountryName");

    System.out.println ("CountryName:" + s2);

    BigDecimal s3 = lFromList.getAttribute("RegionId") (BigDecimal);

    System.out.println ("RegionId:" + s3.toString ());

    }

    You must add the valueChangeListener and at least add the lines

    FacesContext will involve = FacesContext.getCurrentInstance ();

    Make sure that the selection change is processed and the current link lov line has the new selected line

    valueChangeEvent.getComponent () .processUpdates (contxt);

    to ensure that the selected line is available when you click the button.

    And set autosubmit'= true for the field in the UI that displays the LOV.

    Timo

  • search form Web apps: how to retrieve the value of the data-source type field

    Hello

    My question is:

    How can I retrieve the value of the source field of a web - app data-types when you insert the "form web search apps" on a web page.

    I have a web application that contains fields from the data source of the type. These fields to recover the (data) value of the 'web app' - 'elements of the field' field of another web application.

    When I insert the form

    Web apps

    Web apps-search form

    Name of the Web application

    It displays the fields with the field (ie. string, number) types other than type of field 'data source '.

    (Note: in the mode 'model of list' module of data tags, the fields of the data source are visible).

    What other (alternative) possibilities are there to create a search form?

    Thanks for your help.

    Kind regards

    Carla

    By chance, I came up with this workaround. Of course there are other methods to get your data from a web - app, but if you want to use the 'Web apps search form', it would be a workaround.

    I noticed that the "Web apps entry form" contains all the fields of web applications for your web application (including the fields of the data source).

    It is possible to add the fields to the form of the "Web apps entry form" in the «Web apps search form»

    If you insert the "Web apps entry form" on a blank page, you will see all the fields in your web App including the "data source fields. The names of form fields contain something like.

  • Print button to print the page 10 to the dialog asking the user how many times to print page 10

    Hi all

    Want javascript to attach to a button that does the following: -.

    ask the user in the dialog box how many copies of page 10, they wish to print.

    Seems easy hmmm not to me... Unfortunately.

    If this cannot be done is is it possible to have page 10 selected in the dialog box for normal printing on a button... which brings up the print dialog box and all you have to do is select the number of copies.

    Thanks in advance

    Stephen

    You can use this code to do this:

    var copies = Number(app.response("How many times do you want to print page 10?","",""));
    if (!isNaN(copies) && copies>0) {
        var pp = this.getPrintParams();
        pp.firstPage = 9;
        pp.lastPage = 9;
        pp.NumCopies = copies;
        this.print(pp);
    }
    
  • retrieve the datasource value

    In a Web app "Listing", I've created several fields with the type of field "datasource". After making the data on an Internet site the output in html code changes. The value is retrieved from the field in the data source, but also the 'href' link - code. It interferes with my markup schema.org.

    Is there a way only to retrieve the datasource value?

    Thanks in advance for any help.

    Krgds Carla@home

    I finally found the answer in the documentation on: http://docs.businesscatalyst.com/reference/liquid/filters.html

    How to remove HTML code

    that is, if you want to remove the

    -tag, you use the command:

    {{ '

    My paragraph

    ' | strip_html }}

    the above code removes the HTML of the string and outputs 'my paragraph.

  • How to retrieve the value of a custom field

    Hello @all.

    In my vCenter, I created a custom field 'email '. The value of this field is set to the e-mail address of the operator of that belongs to a virtual machine.

    I would like to retrieve these values in a perl script. But I have found a method to set the values of the custom fields. For example:

    $CustomFieldsManager -> SetField(entity => $_, key=> $emailKey, value => "[email protected]");
    

    What should I do to retrieve the value of the $emailKey key? Could someone provide a quick and dirty-snippet, please?

    Best regards

    Trondesson

    of course, in this discussion https://communities.vmware.com/message/1512863#1512863 you can see how it's done

Maybe you are looking for