Re: ajaxtabbedpanel ??
Re: ajaxtabbedpanel ??
- Subject: Re: ajaxtabbedpanel ??
- From: Theodore Petrosky <email@hidden>
- Date: Sun, 16 Jan 2011 20:06:17 -0800 (PST)
Sharpy,
I don't know if you saw my later post for my 'solution'.
For each TabPanel:
<webObject name = "Tab2">
<div class = "twoLine">Sees Employee Management:
<wo:WOCheckBox checked = "$theSecuritySettings.seesUserManagement" />
<br />
</webobject>
I added a isSelected to the WOD:
Tab2: AjaxTabbedPanelTab {
id="Tab2";
name = "Menus";
isSelected = Tab2Selected;
}
Then I added accessors to the Java and it works. I still have only the one form wrapping the ATP. I can only hope that I am not actually breaking something else.
Thanks for looking at it.
Ted
--- On Sun, 1/16/11, Michael Sharp <email@hidden> wrote:
> From: Michael Sharp <email@hidden>
> Subject: Re: ajaxtabbedpanel ??
> To: "Theodore Petrosky" <email@hidden>
> Cc: email@hidden
> Date: Sunday, January 16, 2011, 10:51 PM
> 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