• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: ajaxtabbedpanel ??
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: ajaxtabbedpanel ??


  • Subject: Re: ajaxtabbedpanel ??
  • From: Michael Sharp <email@hidden>
  • Date: Mon, 17 Jan 2011 13:51:52 +1000

I think you're going to have to have a form per tab.

With a form wrapping the entire ATP, when tabs are selected form values are sent for the rendered form fields  only and not the hidden/not in the DOM fields.  The app seems to interpret this as nulls being provided for the missing fields, or in this case a default value of false.

If you override validateTakeValueForKeyPath you should see keypaths for non rendered fields showing up with null/false values when you select tabs..

Sharpy.


On 14/01/2011, at 9:56 PM, Theodore Petrosky wrote:

>
>
> --- On Fri, 1/14/11, Michael Sharp <email@hidden> wrote:
>
>
>> I do use TabbedPanel in an AMD so
>> I'll try.
>>
>> Any errors in eclipse console or javascript errors in the
>> browser?
>
> No errors
>
> WOD and java for AMD
>
> EditUserModalDialog : AjaxModalDialog {
> 	id = "editUserDialog";
> 	showOpener = false;
> 	locked = true;
> 	slideDownDuration = "0.2";
> 	slideUpDuration = "0.2";
> 	action = editUserMeta;
> 	onClose = refreshUserList;
> 	closeUpdateContainerID ="tableBody";
> 	transitions=true;
> }
>
> AMD is called from an opener:
>
> EditUserOpener: AjaxModalDialogOpener {
> 	label = current.fullNameString;
> 	dialogId = "editUserDialog";
> 	action = selectUserToEdit;
> 	title = EditUserMDTitle;
> }
>
> public WOActionResults editUserMeta() {
> 	TWTUser_EditMetaComponent nextPage = (TWTUser_EditMetaComponent)pageWithName(TWTUser_EditMetaComponent.class.getName());
> 	nextPage.setTheUser(aUserToEdit);
>
> 	return nextPage;
> }
>
>
>>
>> Is it a problem with Tab2 or with any tab after the initial
>> tab is displayed. If you give Tab2 the binding of
>> "isSelected = true;" does it display the correct behaviour?
>>
>>> the tabpanel is on an AjaxModalDialog, when I create
>> the modal dialog, I pass in a user object. user has a to one
>> relationship with securitySettings.
>>
>> So when you say pass in an object, you mean supplied as a
>> binding to the component where the AMD is declared?
>>
>> I can't reproduce the problem, maybe the contents of your
>> .wod for TabbedPanel, Tab1 & Tab2 might help..
>
> Here is all the code:
>
>
> <style>
>  .ajaxTabbedPanel {
>    width: auto;
>    border-bottom: 1px solid #c0c0c0;
>    padding: 10px 0 0 20px;
>  }
>
>  .ajaxTabbedPanelTab-selected {
>    display: inline;
>    padding: 3px 7px 1px 7px;
>    background: #ffffff;
>    border: 1px solid #c0c0c0;
>    border-bottom: 0;
>  }
>
>  .ajaxTabbedPanelTab-unselected {
>    display: inline;
>    padding: 2px 7px 0 7px;
>    background: #f0f0f0;
>    border: 1px solid #c0c0c0;
>    border-bottom: 0;
>    color: #c0c0c0;
>  }
>
>  .ajaxTabbedPanelTab-selected a {
>    font-weight: bold;
>    font-size: 12pt;
>    color: #0066CC;
>    padding: 6px;
>  }
>
>  .ajaxTabbedPanelTab-unselected a {
>    font-size: 10pt;
>    padding: 6px;
>    color: #a0a0a0;
>  }
>
>  .ajaxTabbedPanelPanes {
>    width:97%;
>    padding-left: 0px;
>    margin: 2%;
>    min-height: 300px;
>    overflow: auto;
>  }
>
>  .ajaxTabbedPanelPane-selected {
>    list-style-type: none;
>    display: block;
>    padding: 10px;
>  }
>
>  .ajaxTabbedPanelPane-unselected {
>    list-style-type: none;
>    display: none;
>  }
>
>  .tabBox {
>    border: 1px solid #c0c0c0;
>    height: 400px;
>    width: 620px;
>    overflow: auto;
>  }
>
>  tr.meta1 {
>  height:30px
>  }
> </style>
> <wo:WOForm multipleSubmit = true>
>  <div class = "tabBox">
>    <webObject name = "TabbedPanel">
>      <webObject name = "Tab1">
>        <table class = "tableDefs" width = "550">
>          <tr class = "meta1">
>            <td width = "110">First Name</td>
>            <td><wo:WOTextField value = "$theUser.firstName" size = "65" /></td>
>          </tr>
>           <tr class = "meta1">
>            <td width="35%">Last Name</td>
>            <td><wo:WOTextField value = "$theUser.lastName" size = "65" /></td>
>          </tr>
>           <tr class = "meta1">
>            <td>Title</td>
>            <td><webobject name = "EmployeeTitlePopUp" /></td>
>          </tr>
>        </table>
>
>      </webObject>
>      <webObject name = "Tab2">
>
> <table width = "250">
>          <tr>
>            <td>
>              <div>Sees Employee Management:
>                <wo:WOCheckBox checked = "$theSecuritySettings.seesUserManagement" />
>                <br />
>                <br />
>                Sees Client Management:
>                <wo:WOCheckBox checked = "$theSecuritySettings.seesClientManagement" />
>                <br />
>                <br />
>                Sees Settings Management:
>                <wo:WOCheckBox checked = "$theUser.securitySettings.seesSettingsManagement" />
>                <br />
>                <br />
>                Sees Work Management:
>                <wo:WOCheckBox checked = "$theUser.securitySettings.seesWorkManagement" />
>                <br />
>                <br />
>                Sees Billing Management:
>                <wo:WOCheckBox checked = "$theUser.securitySettings.seesBillingManagement" />
>                <br />
>                <br />
>                Sees Time Management:
>                <wo:WOCheckBox disabled = application.noTimeTracking checked = "$theUser.securitySettings.seesTimeManagement" />
>                <br />
>                <br />
>                Sees Task Management:
>                <wo:WOCheckBox disabled = application.noTimeTracking checked = "$theUser.securitySettings.seesTaskManagement" />
>              </div>
>              <br />
>            </td>
>          </tr>
>        </table>
>
> </webObject>
>    </webObject>
>  </div>
>  <br />
>  <wo:AjaxSubmitButton action = "$save" value = "Save" /><wo:AjaxSubmitButton action = "$cancelEdits" value = "Cancel" />
> </wo:WOForm>
> <div id = "busydiv" style = "display: none;"> <webobject name = "BusyImage" /> Loading... </div>
> <p style = "width: 600px;"> </p>
>
> WOD
>
>
> TabbedPanel: AjaxTabbedPanel {
> 	id = "tabbedPanel";
> 	busyDiv = "busydiv";
> }
>
> Tab1: AjaxTabbedPanelTab {
> 	id = "tab1";
> 	name = "Employee";
> 	isSelected = true;
> }
>
> Tab2: AjaxTabbedPanelTab {
> 	name = "Menus";
> 	refreshOnSelect=true;
>
> }
>
> BusyImage : WOImage {
>  framework = "Ajax";
>  filename = "wait30.gif";
> }
>
> EmployeeTitlePopUp : WOPopUpButton {
> 	list = eTitleList;
> 	selection = theUser.employeeTitle;
> 	displayString = theUser.employeeTitle.eTitleTitle;
> 	item = theUser.employeeTitle;
>
> }
>
> JAVA
>
> package com.eltek.components;
>
> import com.eltek.model.EmployeeTitle;
> import com.eltek.model.SecuritySettings;
> import com.eltek.model.User;
> import com.webobjects.appserver.WOContext;
> import com.webobjects.appserver.WOResponse;
>
> import er.ajax.AjaxModalDialog;
> import er.extensions.components.ERXComponent;
> import com.webobjects.appserver.WOActionResults;
> import com.webobjects.eoaccess.EOGeneralAdaptorException;
> import com.webobjects.foundation.NSArray;
> import com.webobjects.foundation.NSLog;
> import com.webobjects.foundation.NSValidation.ValidationException;
>
> public class EditUserMeta extends ERXComponent {
>    public String formValueA;
> 	public String formValueB;
> 	public String formValueC;
> 	private User theUser;
> 	public NSArray<EmployeeTitle> eTitleList;
> 	private SecuritySettings theSecuritySettings;
>
>
> 	public EditUserMeta(WOContext context) {
>        super(context);
>    }
>
> 	public void appendToResponse(WOResponse response, WOContext context) {
>
> 	eTitleList = EmployeeTitle.fetchEmployeeTitles(theUser().editingContext(), EmployeeTitle.IS_ACTIVE.eq(true), EmployeeTitle.E_TITLE_TITLE.ascs());
>
> 	super.appendToResponse(response, context);
> 	}
>
> 	public WOActionResults save() {
>
> 		try {
> 			theUser().editingContext().saveChanges();
> 		} catch (ValidationException e) {
> 			NSLog.out.appendln("ValidationException e = " + e.getMessage());
>
> 		} catch (EOGeneralAdaptorException e) {
> 			NSLog.out.appendln("EOGeneralAdaptorException e = "
> 					+ e.getMessage());
> 		}
>
> 		theUser().editingContext().revert();
>
> 		AjaxModalDialog.close(context());
> 		return null;
> 	}
>
> 	public void setTheUser(User theUser) {
> 		this.theUser = theUser;
>
> 		//experiment with new accessor for the security settings
>
> 		this.setTheSecuritySettings(theUser.securitySettings());
> 	}
>
> 	public User theUser() {
> 		return theUser;
> 	}
>
> 	public WOActionResults cancelEdits() {
>
> 		theUser().editingContext().revert();
>
> 		AjaxModalDialog.close(context());
> 		return null;
> 	}
>
> 	public void setTheSecuritySettings(SecuritySettings theSecuritySettings) {
> 		this.theSecuritySettings = theSecuritySettings;
> 	}
>
> 	public SecuritySettings theSecuritySettings() {
> 		return theSecuritySettings;
> 	}
> }
>
>
>>
>> Sharpy..
>>
>>>
>>> on panel one, I am displaying and editing user
>> metadata. on panel two, I want to edit some security
>> settings.
>>>
>>> if i put on tab one:
>>> see user area <wo:WOCheckBox checked =
>> "$theUser.securitySettings.seesUserManagement" />
>>>
>>> I get the checkbox with this user seesUserManagement
>> setting.
>>>
>>> However, if this same code is on tab two, there is no
>> connection to the object.
>>>
>>>
>>> <wo:WOForm multipleSubmit = true;>
>>>   <div class = "tabBox">
>>>     <webObject name = "TabbedPanel">
>>>       <webObject name = "Tab1">
>>>         <table class =
>> "tableDefs" width = "550">
>>>           <tr class =
>> "meta1">
>>>             <td width
>> = "110">First Name</td>
>>>
>> <td><wo:WOTextField value = "$theUser.firstName"
>> size = "65" /></td>
>>>           </tr>
>>>
>>>         </table>
>>> <br/><br/>
>>>
>>> see user area <wo:WOCheckBox checked =
>> "$theUser.securitySettings.seesUserManagement" />
>>>
>>> </webObject  name = "Tab1">
>>>
>>> <webObject name = "Tab2">
>>>
>>> <wo:WOCheckBox checked =
>> "$theUser.securitySettings.seesUserManagement" />
>>>
>>> </webObject name = "Tab2">
>>> </webObject name = "TabbedPanel">
>>> </div>
>>> <wo:AjaxSubmitButton action = "$cancelEdits" value
>> = "Cancel" /><wo:AjaxSubmitButton action = "$save"
>> value = "Save" />
>>> </wo:WOForm>
>>>
>>>
>>> why doesn't tab2 connect to
>> "$theUser.securitySettings.seesUserManagement"
>>>
>>> on tab1 the checkbox is checked (correct) however on
>> tab2 no check.
>>>
>>> I don't even know if I am explaining this clearly
>> enough.
>>>
>>> Help, please.
>>>
>>> Ted
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>
>
> Any help would be appreciated
>
>
> Ted
>
>
>
>
>

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden

  • Follow-Ups:
    • Re: ajaxtabbedpanel ??
      • From: Theodore Petrosky <email@hidden>
References: 
 >Re: ajaxtabbedpanel ?? (From: Theodore Petrosky <email@hidden>)

  • Prev by Date: Re: AjaxTabbedPanel ??? V2
  • Next by Date: Re: ajaxtabbedpanel ??
  • Previous by thread: Re: ajaxtabbedpanel ??
  • Next by thread: Re: ajaxtabbedpanel ??
  • Index(es):
    • Date
    • Thread