Skin or change color of selected radio button or selected checkbox
I'm creating a custom CSS and I want to change the color of the checkmark (or the icon used) for selected radio buttons/checkboxes. Right now it's green (because it's using the simple stylesheet) but I don't know what element I can use to change the color or skin it. I've tried the af:selectBooleanCheckbox and af:selectBooleanRadio (even though they say they are only for disabled and read-only) but they don't appear to do anything... what do I use?
Have a look at
http://www.oracle.com/technology/products/jdev/htdocs/partners/addins/exchange/jsf/doc/skin-selectors.html
Searh e.g for
af:selectBooleanCheckbox Component
to learn how to work with custom images
Frank
Similar Messages
-
Changing The Text Color In a Radio Button Component
Hi,
I'm using a background in my frame , so I need to know how
to change the color of the Radio Button Component. I tried using
the Property Inspector , but in that the color option is disabled.
The Flash version I'm using is Flash 8. Kindly provide me a
solution for this.
Thanks In Advance,
Lokesh RThere's a topic about this in the Flash help, about changing
components. You need to edit the file inside your Flash
installation folder, and make a copy of it to your liking.
But about radio buttons: is there any way to include them in
your project while maintaining the possibility of on(Keypress)
events? -
How do you grey out/disable fields under a radio button if another radio button is selected in Adobe Acrobat XI Pro?
I’m creating a form where the user has three options to make a payment.
1. charge to my credit card
2. charge associated costs to bank account
3. By cheque or money order
My Problem is, under each option, there are required fields that has to be filled out. So if the user picks the first option, charge to my credit card, they would fill out the required fields (credit card number, expiration date etc.). But when they click submit button to submit the form, it won’t let them, because there are required fields under the second option. Also, I have the radio buttons for the three options setup so that if the user holds the shift key and clicks a radio button, it unchecks it. So what I'm trying to do is this: If the user selects the radio button for option 1, the other two options are greyed out/disabled. And if the user holds down the shift key and clicks radio button for option one again, it unchecks the radio button and the other two options are available again. Is there a way to grey out or disable the two other payment options when the other one is picked. I’m assuming I will have to use javascript, but what would the coding be and which field do I write it under?
Thanks in advance guysYou will have to use custom JavaScript to access the various properties of the field object.
The radio button group has a value. When no button is selected that value is "Off". When an individual button has been selected the value for the group will be the option or export value for that individual button.
Once you have determined the button selected, then you will know the form fields that need to be made required. You use JavaScript to access those fields and change the "read only" property to false, and set the "required" property to true. For the fields associated with the other options, those fields should be reset, made read only, and have the "required" property set to false.
Disabling (graying-out) Form Fields
>> Also, I have the radio buttons for the three options setup so that if the user holds the shift key and clicks a radio button, it unchecks it.
Radio button in a PDF do not work that way. Only check boxes can be unchecked by clicking on one that has been checked.
If you plan the coding for the Mouse UP action to test for all possible options and code for each of those options you should have what you want.
If you want actual code you need to provide a lot more details.
It is even possible to perform some credit card and bank routing number validations with JavaScript and some check digit formulas. -
Get the value of a selected radio button within a ToggleGroup
All
Please see the script below. All I'm trying to do is to identify the selected radio button within a ToggleGroup. This has been working in JavaFX 1.2.
This is JavaFX 1.3 running on NetBeans 6.9 (beta) on Ubuntu 10.04
Does anyone know why this is no longer working?
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.control.ToggleGroup;
import javafx.scene.control.RadioButton;
import javafx.scene.layout.HBox;
import javafx.scene.control.Toggle;
def levelGroup = ToggleGroup {};
var selected: Toggle = bind levelGroup.selectedToggle on replace {
// here I want to capture the value of the selected toggle
// the outputted value is always 'null'
println("level toggle = {selected.value}");
println("selectedToggle = {levelGroup.selectedToggle.value}");
Stage {
scene: Scene {
width: 300
height: 300
content: [
HBox {
translateX: 100
translateY: 67
spacing: 20
content: [
RadioButton {
toggleGroup: levelGroup
text: "Easy"
selected: false
RadioButton {
toggleGroup: levelGroup
text: "Medium"
selected: true
RadioButton {
toggleGroup: levelGroup
text: "Hard"
selected: false
}Actually, your code above wouldn't have worked in JavaFX 1.2 as we only added the value property to the new Toggle mixin in 1.3. I believe what worked for you in 1.2 was when you referred to text, which is not a property on Toggle, so you need to cast the selected variable from Toggle to a RadioButton, which does have a text property. For example, this would work:
var selected: Toggle = bind levelGroup.selectedToggle on replace {
println("level toggle = {(selected as RadioButton).text}");
println("selectedToggle = {(levelGroup.selectedToggle as RadioButton).text}");
}Alternatively, instead of casting like this, you can store a value in the value property of the Toggle mixin class, which is extended by RadioButton. For example, your code could be changed to the following (in particular note that the only change is the addition of the value properties in each of the RadioButton):
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.control.ToggleGroup;
import javafx.scene.control.RadioButton;
import javafx.scene.layout.HBox;
import javafx.scene.control.Toggle;
def levelGroup = ToggleGroup {};
var selected: Toggle = bind levelGroup.selectedToggle on replace {
println("level toggle = {selected.value}");
println("selectedToggle = {levelGroup.selectedToggle.value}");
Stage {
scene: Scene {
width: 300
height: 300
content: [
HBox {
translateX: 100
translateY: 67
spacing: 20
content: [
RadioButton {
toggleGroup: levelGroup
text: "Easy"
selected: false
value: "Easy"
RadioButton {
toggleGroup: levelGroup
text: "Medium"
selected: true
value: "Medium"
RadioButton {
toggleGroup: levelGroup
text: "Hard"
selected: false
value: "Hard"
}This approach saves you from having to cast from Toggle to RadioButton. This second approach is actually very powerful, as you can store any object in the value field, and can then easily retrieve it at a later point when the user selects the desired RadioButton. Of course, you can just use it as in the simple case above as well.
I hope that helps. -
Agent ready Radio button remains selected even though agent is on call.
Hi
issue
Agent logsin to Interacton center and system by default puts him in to NOT Ready Status.
Agent changes the status from Not ready to Ready.
Agent receives a call via queue
Agent accepts call via interaction center
Ready Radio button reamins selected even though customer care agent is on phone with Customer.
In idle situation the radio button should move from ready to not ready or any other state.
Landscape : SAP CRM / AMC MCIS / CISCO IPCC.
we did our system restarts still issue is not resolved.
Has anyone ever noticed this issue.
any Help or guidnace is really appreciated. Thanks in advance
RegardsHi Alok,
That behavior may be just how your CMS and Telephony system behaves. In all likelihood you are not going to get a queued call at that point, since you already are on a queued call. As long as the state display is correct once the call is ended, that is the most important thing. I have seen some telephony systems where even the hard phone shows ready during the call, and doesn't change modes until after the call is ended. Anyway, you should check with your CMS vendor - in this case AMC MCIS.
Sincerely,
Glenn
Glenn Abel
Covington Creative
www.covingtoncreative.com -
Radio button in selection screen and push button
Hi experts,
I want to give radio button in selection screen side by side.
how we can do this on slection screen.
secondly i want to resize push button on selection screen.
please provide me the exact solution.
thanks
babbalHi babbal,
For Your Requriment yo can go to tcode se51 & then give ur program name & give screen number as 1000 because 1000 is default screen for all the programs and in se51 Press Layout button & then you can make changes to the Selection screen according to your requriment
Hope it will be Helpfull.......!!
Thanks & Regards,
Bhushan -
Grey out section if select radio button
Hi, this question is probably answered elsewhere, but I couldn't find. Am totally noob at Javascript or any scripting at all
I have a form which is rather complicated, where the clients would only need to fill certain sections depending on their selection. Also the form in PDF may be printed out by some clients whom may not be comfortable filling it online.
I have a few radio buttons, where if depending on the selection, a particular group of fields to become greyed out. . E.g. if selected option 1, the whole section A would be disabled (not hidden).
Can anyone help me with a script which can perform this function? Also, if the client decides to toggle to option 2, the Section A would be enabled back. Also when printed out, the section would still appear for Operations to be able to see that form is filled up as a whole.
rgdsIt's also a good idea to reset any fields that you disable so that they don't then contain invalid data. So the script that Michael posted could be changed to:
if (event.target.value != "Option1") { // If Option1 radiobutton is off, unlock Section A
this.getField("SectionA").readonly = false;
} else {
resetForm(["SectionA"]); // Reset the SectionA fields
this.getField("SectionA").readonly = true //Otherwise, lock Section A
For this to work correctly, you have to set the SectionA fields to read-only before any of the radio buttons is selected. -
Help: Need to calculate a radio button when selected or not selected
I am hoping its possible to use a script to calculate a radio button when it is selected. For example:
My form has 4 grouped radio buttons (Radio Button 1-4) of 5 buttons.
So its something like this:
Level 1 Level 2 Level 3 Level 4 Level 5
1. RB1 RB1 RB1 RB1 RB1
2. RB2 RB2 RB2 RB2 RB2
3. RB3 RB3 RB3 RB3 RB3
4. RB4 RB4 RB4 RB4 RB4
Items areas total: Total Points: Average Score:
The buttons already have different values set for each button to calculate a score in the "Total Points" text field. (Level 1 scores 1, Level 2 scores 2, etc.)
I would like to have the "Items areas total" text field to calculate either a value of 1 if selected or a 0 if not selected. So if 3 of the 4 rows are selected a return of "3" is calculated, if all 4 rows are selected then it returns "4", etc.
Seems it would be a simple script.
ThanksHi Franklin,
I understand that we can show the selected row in different color.
But still there is a requiremnet given saying that there should be an radio button or Select button or check box (Checked only one at a time of several rows) apart from showing the selected row in a different color.
Current display of the page:
We have three regions, 1> Main region, 2> Master region, 3> Detail region.
Main region has some text parameters, Master region has a adf:table and when ever you select a row on the master region the detail region values are getting refreshed based on the row selected.
Is there any simple way apart from adding a boolean transient attribute to VO and displaying it as one of the column in adf:table?
Thanks,
Sandeep -
How do I tell if a radio button is selected?
Apart from relying on the radiohandler, is there any direct command or code which i can use to immediately check if a particular radio button is selected or not?
Like in Visual Basic, we can immediate state if (radiobutton.value = false)
is there any equivalent to this in java?The radio button inherits from abstractButton class.
I believe in the abstractButton has isSelected method.
You can use this to get the state of the button. -
How can I make a check box hidden (invisible) if a radio button is selected?
I am using Adobe Acrobat X Standard, and I can't seem to find a JavaScript that will do what I want.
I need one check box to be invisible or hidden if a certain radio button is selected.
Ex: if a user selects "yes" from the radio button list, I need one of 2 check boxes lower on the form to be invisible/hidden/non-selectable.
Can someone please help me?Does this have something to do with a "field dependency" setting within Acrobat itself?
I am so confused at this point, I don't even know where to look anymore. -
Radio button and select option in one line
Hi,
I have an requirement in which i need to display the radio button and select option in one line in an report program.
How can i do it?
Regards,
Arun.Hi,
Try this code.
TABLES: bkpf.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: p_r1 RADIOBUTTON GROUP a.
SELECTION-SCREEN COMMENT 4(20) text-001 FOR FIELD p_r1.
SELECTION-SCREEN COMMENT 30(12) text-002 FOR FIELD p_date.
SELECTION-SCREEN POSITION 39.
SELECT-OPTIONS: p_date FOR bkpf-budat OBLIGATORY.
SELECTION-SCREEN END OF LINE.
PARAMETERS: p_r2 RADIOBUTTON GROUP a.
text-001 = " Radio button"
text-002 = "Posting date" -
Radio Buttons on Selection Screen
Hi,
I have four radio buttons on selection screen in a frame, all belonging to the same group.
When the program is called using transaction 1, first two radio buttons are displayed. When the program is called using transaction 2, bottom two radio must be displayed.
I am doing this using the following code.
The problem is : When last two are displayed, there is empty space left on the top and first two are displayed there is empty space left in the bottom of the frame. How can this be taken care of such there are no empty spaces in the box frame?
Code:
Radio Buttons for Table Name
SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE text-005.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS : p_ot RADIOBUTTON GROUP grp1 MODIF ID one.
SELECTION-SCREEN COMMENT 5(31) text-001 FOR FIELD p_ot.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS : p_exp RADIOBUTTON GROUP grp1 MODIF ID one.
SELECTION-SCREEN COMMENT 5(31) text-002 FOR FIELD p_exp.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS : p_cost RADIOBUTTON GROUP grp1 MODIF ID two.
SELECTION-SCREEN COMMENT 5(31) text-003 FOR FIELD p_cost.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS : p_att RADIOBUTTON GROUP grp1 MODIF ID two.
SELECTION-SCREEN COMMENT 5(31) text-004 FOR FIELD p_att.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK bl1.
Initialization
INITIALIZATION.
Display Table Names depending on transaction calling the program
PERFORM display_table_names.
FORM display_table_names.
DATA : l_mod_id(3) TYPE c.
IF sy-tcode EQ 'ZVTEST1'.
l_mod_id = 'ONE'.
ELSEIF sy-tcode EQ 'ZVTEST2'.
l_mod_id = 'TWO'.
ENDIF.
LOOP AT SCREEN.
IF screen-group1 EQ l_mod_id.
screen-invisible = '1'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDFORM. " display_table_namesHi,
REPORT Z_SALES MESSAGE-ID ZZ .
* Variables *
DATA: IT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE,
IT_MSGS LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
DATA: V_FILE TYPE STRING.
* Internal Tables *
DATA: BEGIN OF IT_SALES OCCURS 0,
AUART,
VKORG,
VTWEG,
BSTKD,
KUNNR_KUNAG,
KUNNR_KUNWE,
KETDAT,
KPRGBZ,
PRSDT,
BSTKD_1,
KUNNR_KUNAG1,
KUNNR_KUNWE1,
KETDAT_1,
KPRGBZ_1,
PRSDT_1,
ZTERM_1,
INCO1,
INCO2,
MABNR,
KWMENG,
BSTKD_2,
KUNNR_KUNAG2,
KUNNR_KUNWE2,
KETDAT_2,
KPRGBZ_2,
PRSDT_2,
ZTERM_2,
INCO1_1,
INCO2_2,
KSCHL,
KBETR,
END OF IT_SALES.
* Selection-Screen *
*Selection Screen 1
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETERS : P_FILE(25) TYPE C,
O_FILE(25) TYPE C.
SELECTION-SCREEN END OF BLOCK B1.
*Selection Screen 2
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-002.
PARAMETERS: CAL_TRA RADIOBUTTON GROUP G1 USER-COMMAND FLAG,
SESSION RADIOBUTTON GROUP G1 DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK B2.
*Selection Screen 3
SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-003.
PARAMETERS: MODE DEFAULT 'X' MODIF ID BL1,
UPDATE DEFAULT 'X' MODIF ID BL1.
SELECTION-SCREEN END OF BLOCK B3.
*Selection Screen 4
SELECTION-SCREEN BEGIN OF BLOCK B4 WITH FRAME TITLE TEXT-003.
PARAMETERS: SES_NAM(25) MODIF ID BL2,
KEP_TRAS TYPE C DEFAULT 'X' MODIF ID BL2,
LOC_DATE TYPE SY-DATUM MODIF ID BL2,
USER TYPE SY-UNAME DEFAULT SY-UNAME MODIF ID BL2.
SELECTION-SCREEN END OF BLOCK B4.
* At Selection-Screen Output *
AT SELECTION-SCREEN OUTPUT.
IF CAL_TRA = 'X'.
LOOP AT SCREEN.
IF SCREEN-GROUP1 = 'BL1'.
SCREEN-ACTIVE = '1'.
ENDIF.
IF SCREEN-GROUP1 = 'BL2'.
SCREEN-ACTIVE = '0'.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ENDIF.
IF SESSION = 'X'.
LOOP AT SCREEN.
IF SCREEN-GROUP1 = 'BL1'.
SCREEN-ACTIVE = '0'.
ENDIF.
IF SCREEN-GROUP1 = 'BL2'.
SCREEN-ACTIVE = '1'.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ENDIF.
* At Selection-Screen *
AT SELECTION-SCREEN.
PERFORM VALIDATE_MANDATORY_FIELDS.
***************** INITIALIZATION ********************
INITIALIZATION.
LOC_DATE = SY-DATUM - 1.
* Start of Selection *
START-OF-SELECTION.
V_FILE = P_FILE.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = V_FILE
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = ' '
TABLES
DATA_TAB = IT_SALES
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_READ_ERROR = 2
NO_BATCH = 3
GUI_REFUSE_FILETRANSFER = 4
INVALID_TYPE = 5
NO_AUTHORITY = 6
UNKNOWN_ERROR = 7
BAD_DATA_FORMAT = 8
HEADER_NOT_ALLOWED = 9
SEPARATOR_NOT_ALLOWED = 10
HEADER_TOO_LONG = 11
UNKNOWN_DP_ERROR = 12
ACCESS_DENIED = 13
DP_OUT_OF_MEMORY = 14
DISK_FULL = 15
DP_TIMEOUT = 16
OTHERS = 17.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*& Form VALIDATE_MANDATORY_FIELDS
* text
FORM VALIDATE_MANDATORY_FIELDS.
IF P_FILE IS INITIAL OR O_FILE IS INITIAL.
MESSAGE E000 WITH 'ENTER BOTH THE FILE NAMES'.
ENDIF.
IF CAL_TRA = 'X'.
IF MODE IS INITIAL OR UPDATE IS INITIAL.
MESSAGE E000 WITH 'ENTER BOTH THE OPTIONS'.
ENDIF.
IF SY-SUBRC <> 0.
IF MODE <> 'A' OR MODE <> 'E' OR MODE <> 'N'
OR MODE <> 'a' OR MODE <> 'e' OR MODE <> 'n'.
MESSAGE E000 WITH 'Mode should be either A, E or N'.
ENDIF.
IF UPDATE <> 'S' OR UPDATE <> 'A'
OR UPDATE <> 's' OR UPDATE <> 'a'.
MESSAGE E000 WITH 'Mode should be either S or A'.
ENDIF.
ENDIF.
ENDIF.
IF SESSION = 'x'.
IF SES_NAM IS INITIAL
OR KEP_TRAS IS INITIAL
OR LOC_DATE IS INITIAL
OR USER IS INITIAL.
MESSAGE E000 WITH 'ENTER ALL THE FIELDS'.
ENDIF.
ENDIF.
ENDFORM. "VALIDATE_MANDATORY_FIELDS
Regards
vijay -
Is it possible to make a fillable form have variable fields - so if you select a radio button it triggers a different form field to be seen depending on which radio button is selected??
Yes, one needs to use some custom JavaScript code to control the other fields' properties.
Disabling (graying-out) Form Fields by Thom Parker -
Restriction on length of the name given to a radio button in selection scr
Hi,
Is there any length restriction for the name given to a radio button in SELECTION SCREEN?
I need to display a 35 char name for a radio button.It can be upto 8 characters long. But here is a solution to your problem:
selection-screen begin of line.
parameters: rb_opt1 radiobutton group mygrp.
selection-screen comment 5(35) text-s01 for field rb_opt1.
selection-screen end of line.
selection-screen begin of line.
parameters: rb_opt2 radiobutton group mygrp.
selection-screen comment 5(35) text-s02 for field rb_opt2.
selection-screen end of line.
and then just double click on the text objects to write your own texts.
Hope it helps. -
Regarding radio button and selection screen
hi
i have a requirement to grey out one particular select option , if any one of 4 radio button is selected. (total 5 radio buttons ) .
how do i proceed .
SELECTION-SCREEN BEGIN OF BLOCK blk WITH FRAME.
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: p_year for s021-spmon obligatory,
p_kunag FOR vbrk-kunag ,
p_matnr FOR vbrp-matnr ,
p_augru FOR vbrp-augru_auft ,
p_vbeln FOR vbrk-vbeln .
SELECTION-SCREEN END OF BLOCK blk1.
SELECTION-SCREEN BEGIN OF BLOCK blk2 WITH FRAME TITLE text-002.
PARAMETERS: nrw RADIOBUTTON GROUP g1 default 'X'user-command check,
mwd RADIOBUTTON GROUP g1user-command check,
rws RADIOBUTTON GROUP g1user-command check,
edu RADIOBUTTON GROUP g1user command check
standard RADIOBUTTON GROUP g1 .
SELECTION-SCREEN END OF BLOCK blk2.
SELECTION-SCREEN END OF BLOCK blk.
i know we need to use at-selection screen output.
but how do i set ONLY that particular select option , to no input.Hi ,
Use like This
User Dynamic Selection
at selection-screen output.
select single * from t000md.
loop at screen.
case screen-group1.
when 'REL'.
if not p_old is initial.
screen-input = '0'.
screen-required = '0'.
screen-invisible = '1'.
endif.
modify screen.
when 'BEL'.
if not p_new is initial.
screen-input = '0'.
screen-required = '0'.
screen-invisible = '1'.
endif.
modify screen.
when 'ARB'.
if p_new is initial.
screen-input = '0'.
screen-required = '0'.
screen-invisible = '1'.
endif.
modify screen.
when 'MTA'.
if p_new is initial.
screen-input = '0'.
screen-required = '0'.
screen-invisible = '1'.
endif.
modify screen.
endcase.
endloop.
Reward Points if it is useful
Thanks
Seshu
Maybe you are looking for
-
Unable to access applications in workspace,shared services
Hi , I am Unable to access applications in workspace and shared services on EPM 11.1.1.3. It happened after normal shutdown/startup scripts were run. But when I reconfigure the Weblogic web server and run the services again I can access the applicati
-
Apple TV on 5508 Guest/BYOD WLAN
Currently our Guest and employee BYOD clients get dropped on to the same vlan. Guest is an open wlan, and BYOD is doing 802.1X with PEAP. We are wanting to allow access to Apple TV devices for both guest and BYOD clients which are on the same vlan/
-
Hi, I'm using the Geforce 4 ti4400 card, and I connected a vcr and TV to my card. My problem is this: The size of the screen is too big for the TV. In other words, I get only part of the screen on tv. I tried the screen adjustment, but the problem is
-
ANN: Site-Wide Management in Dreamweaver Tutorial Series
http://www.projectseven.com/products/menusystems/pmm3/tutorials/site-wide/ Dreamweaver Templates, Library Items and Server-Side Includes allow you to manage repeating sections of your web pages in a central file. This series of tutorials listed below
-
Integrating Bank Wizard and Forms 6 on Tru64?
Hi all, I'm currently working at a site that is thinking about trying to call Bank Wizard from Eiger Systems from an old character based Forms 6 application that is running on Tru64. Does anyone know if this is even possible? Better still, if you hav