Thanks Chuck!
That last line about the AMD opener started me thinking in exactly the
right way.
-Mike
On Aug 2, 2011, at 11:22 PM, Chuck Hill wrote:
> Hi Michael,
>
> On 2011-08-01, at 2:21 PM, Michael Gargano wrote:
>
>> Hey Chuck,
>>
>> This is from a few months ago, but how exactly are you passing your
>> selected row into the dialog to edit it? I can't figure this out since I'm
>> using a custom cell in the grid to do this. the custom cell has an
>> ajaxmodaldialogopener with an image in it.
>>
>> are you just directly using ajaxmodaldialogopener as the custom component?
>
> No. Here is a class that I have been using as the superclass of the
> components in a grid. You may find it useful:
>
> package net.foo.core.web;
>
> import com.webobjects.appserver.*;
> import com.webobjects.eocontrol.*;
> import com.webobjects.foundation.*;
>
> import er.ajax.*;
>
> /**
> * Optional super-class for components that appear in cells in the AjaxGrid.
> */
> public class AjaxGridCell extends WOComponent
> {
> private String rowIndex;
>
> /**
> * Basic class constructor.
> *
> * @param context of current page
> */
> public AjaxGridCell(WOContext context)
> {
> super(context);
> }
>
>
>
> /**
> * @return true as this component is stateless and non-synchronizing
> */
> public boolean isStateless()
> {
> return true;
> }
>
>
>
> /**
> * Nulls optimization variables.
> */
> public void reset()
> {
> rowIndex = null;
> }
>
>
> /**
> * @return object bound to <code>value</code>
> */
> public Object value()
> {
> return valueForBinding("value");
> }
>
>
>
> /**
> * @return AjaxGrid bound to <code>grid</code>
> */
> public AjaxGrid grid()
> {
> return (AjaxGrid) valueForBinding("grid");
> /** ensure [valid_result] Result != null; **/
> }
>
>
>
> /**
> * @return object bound to grid <code>row</code>
> */
> public EOEnterpriseObject object()
> {
> return (EOEnterpriseObject)grid().row();
> }
>
>
>
> /**
> * @return grid()'s configurationData()
> */
> public NSMutableDictionary configurationData()
> {
> return grid().configurationData();
> /** ensure [valid_result] Result != null; **/
> }
>
>
>
> /**
> * @return grid()'s displayGroup()
> */
> public WODisplayGroup displayGroup()
> {
> return grid().displayGroup();
> /** ensure [valid_result] Result != null; **/
> }
>
>
>
> /**
> * @return grid()'s editingContext()
> */
> public EOEditingContext editingContext()
> {
> return displayGroup().dataSource().editingContext();
> /** ensure [valid_result] Result != null; **/
> }
>
>
>
> /**
> * @return updateContainerID for AjaxActionLinks in this grid
> */
> public String updateContainerID()
> {
> return (String)
> configurationData().objectForKey(AjaxGrid.UPDATE_CONTAINER_ID);
> /** ensure [valid_result] Result != null; **/
> }
>
>
>
> /**
> * @return returns index for the current row that can be used to create
> unique IDs for HTML
> */
> public String rowIndex()
> {
> if (rowIndex == null)
> {
> int index =
> displayGroup().displayedObjects().indexOfObject(object());
> rowIndex = String.valueOf(index);
> }
>
> return rowIndex;
> /** ensure [valid_result] Result != null; **/
> }
>
>
>
> /**
> * Return unique ID for this row in the grid. This is to be used to build
> unique IDs for each row.
> *
> * @return unique ID for this row in the grid
> */
> public String rowID()
> {
> return grid().rowID();
> /** ensure [valid_result] Result != null; **/
> }
>
>
> }
>
> The AMD Opener then stashes object() in the thread/page/session/as you like
> for the dialog to use. My pages have a concept of "selected object" or
> "focused object"
>
>
>
>> also, this is probably a dumb question, but there's no way to pop and push
>> modal dialogs on top of one another? My spec calls for a modal dialog that
>> has another modal on top of it for selection inside the 1st modal dialog (i
>> just work here).
>
> :-)
>
>
>> i starting writing a component myself, but when I needed to make it ajax-y i
>> turned and started running the other way.
>
> I don't think there is a way. The reason is that the underlying JavaScript
> implementation just allows for one to be displayed at a time. You would have
> to close one and open the other, or update the contents of the current one
> with the other one. I'd look at that or something like an expansion area.
>
>
> Chuck
>
>
>> On May 25, 2011, at 1:37 PM, Chuck Hill wrote:
>>
>>> Hi Raymond,
>>>
>>>
>>> On May 25, 2011, at 3:10 AM, <[email protected]>
>>> <[email protected]> wrote:
>>>
>>>> Hi Chuck,
>>>>
>>>> this is my html :
>>>> <wo:tPopUpButton list="$personList" item="$person"
>>>> value="$selectedPerson"/>
>>>> <wo:AjaxModalDialogOpener id="refreshGrid">
>>>>
>>>> <wo:AjaxSubmitButton action="$addSelectedPerson" value="addPerson">
>>>>
>>>> </wo:AjaxModalDialogOpener>
>>>>
>>>> <webobject name=personNavBar">
>>>> <webobject name"personGrid">
>>>>
>>>> and this is my WOD
>>>>
>>>> personGrid : AjaxGrid {
>>>> configurationData = personDataConfig;
>>>> displayGroup = personDg;
>>>> afterUpdate = "personNavBarUpdate();";
>>>> }
>>>>
>>>> NavBarPerson : AjaxGridNavPersonBar {
>>>> containerID = "NavBarPerson";
>>>> displayGroup = personDg;
>>>> configurationData = personDataConfig;
>>>> }
>>>>
>>>> I don't use AjaxModalDialog but AjaxModalDialogOpener.
>>>
>>> But... you do have an AjaxModalDialog that the AjaxModalDialogOpener is
>>> opening, right? If you don't, you are not using the AjaxModalDialogOpener
>>> correctly. If you do have an AjaxModalDialog (even if it is in a different
>>> component), then the closeUpdateContainerID goes in that WOD definition.
>>>
>>>
>>>> Can I surround AjaxModalDialogOpener with AjaxModalDialog ?
>>>
>>> No. See how they are used in the AjaxExamples application in Wonder. You
>>> also should not have a submit button inside the AjaxModalDialogOpener:
>>>
>>>> <wo:AjaxModalDialogOpener id="refreshGrid">
>>>>
>>>> <wo:AjaxSubmitButton action="$addSelectedPerson" value="addPerson">
>>>>
>>>> </wo:AjaxModalDialogOpener>
>>>
>>>
>>>
>>>> Where I insert AjaxModalDialog in my code to refresh my grid? My
>>>> AjaxModalDialogOpener is on the good side in html code?
>>>
>>> The AjaxModalDialog was to edit the information shown in your grid.
>>>
>>>
>>> Chuck
>>>
>>>
>>>>
>>>> Message du : 25/05/2011
>>>> De : "Chuck Hill " <[email protected]>
>>>> A : [email protected]
>>>> Copie à : [email protected]
>>>> Sujet : Re: Using DataGrid in WO
>>>>
>>>>
>>>> In the plist that has your grid configuration, add a line like this:
>>>> updateContainerID = "resultsContainer";
>>>>
>>>> Then in the WOD that defines the dialog:
>>>> MyDialog : AjaxModalDialog {
>>>> closeUpdateContainerID = "resultsContainer";
>>>>
>>>>
>>>> Chuck
>>>>
>>>>
>>>> On May 20, 2011, at 12:34 PM, <[email protected]>
>>>> <[email protected]> wrote:
>>>>
>>>>> Hi Chuck,
>>>>>
>>>>> Can you give me an example, I don't know how to introduce it in my code.
>>>>>
>>>>> Thanks
>>>>>
>>>>>
>>>>> ========================================
>>>>>
>>>>> Message du : 20/05/2011
>>>>> De : "Chuck Hill " <[email protected]>
>>>>> A : [email protected]
>>>>> Copie à : [email protected]
>>>>> Sujet : Re: Using DataGrid in WO
>>>>>
>>>>>
>>>>> Use the closeUpdateContainerID binding on the AjaxModalDialog.
>>>>>
>>>>>
>>>>> On May 20, 2011, at 6:07 AM, <[email protected]> wrote:
>>>>>
>>>>>> Hi Chuck,
>>>>>>
>>>>>> I try to follow your advice but I have some problems.
>>>>>>
>>>>>> In HTML (my textfield and button using to add person in my Grid: )
>>>>>>
>>>>>> <wo:tPopUpButton list="$personList" item="$person"
>>>>>> value="$selectedPerson"/>
>>>>>> <wo:AjaxModalDialogOpener id="refreshGrid">
>>>>>> <wo:AjaxSubmitButton action="$addPerson" value="add">
>>>>>> </wo:AjaxModalDialogOpener>
>>>>>> <webobject name=personNavBar">
>>>>>> <webobject name"personGrid">
>>>>>>
>>>>>> In WOD
>>>>>> ...
>>>>>> personGrid : AjaxGrid {
>>>>>> configurationData = personDataConfig;
>>>>>> displayGroup = personDg;
>>>>>> afterUpdate = "personNavBarUpdate();";
>>>>>> }
>>>>>>
>>>>>> in java class
>>>>>> ... variable declaration
>>>>>>
>>>>>> public WOActionResults addPerson(){
>>>>>> personDg = new WODisplayGroup();
>>>>>> persondg.setObjectArray(PersonData(selectedPerson.fullname));
>>>>>> }
>>>>>>
>>>>>> private NSMutableArray PersonData(String aPerson) {
>>>>>> NSMutableDictionnary personDico = new NSMutableDictionnary ();
>>>>>> if(aPerson.equals(null)){
>>>>>> return null;
>>>>>> }
>>>>>> personDico.takeValueForKey(aPerson, "persnoFullname 1");
>>>>>>
>>>>>> return (NSMutableArray) personDico.allValues();
>>>>>> }
>>>>>>
>>>>>> My question is How to refresh my Grid to know if the person I added is
>>>>>> present in the grid?
>>>>>>
>>>>>> Thanks
>>>>>> ========================================
>>>>>>
>>>>>> Message du : 19/05/2011
>>>>>> De : "Chuck Hill " <[email protected]>
>>>>>> A : [email protected]
>>>>>> Copie à : [email protected]
>>>>>> Sujet : Re: Using DataGrid in WO
>>>>>>
>>>>>>
>>>>>> I have never added data directly in a grid. You would need to create a
>>>>>> new object in the display group that the grid is using and use
>>>>>> AjaxInPlace fields to edit the data. Instead, I use an
>>>>>> AjaxModalDialogOpener in the grid and an AjaxModalDialog to add or edit
>>>>>> one object. When the modal dialog closed, it refreshes the grid.
>>>>>>
>>>>>> Chuck
>>>>>>
>>>>>>
>>>>>> On May 19, 2011, at 10:31 AM, <[email protected]> wrote:
>>>>>>
>>>>>>> Hi Chuck,
>>>>>>>
>>>>>>> I want to fill my AjaxGrid by adding data using textField and
>>>>>>> submitButton.
>>>>>>>
>>>>>>> How my addData() method can look like? I want to add person by company
>>>>>>> (PopUpButton with companies).
>>>>>>> my configData file .plist is :
>>>>>>>
>>>>>>> {
>>>>>>> tableID = "personGrid";
>>>>>>> updateContainerID = "ajaxGridContainer";
>>>>>>> sortable = true;
>>>>>>> canReorder = true;
>>>>>>> batchSize = 4;
>>>>>>> cssClass = "ajaxGridTab";
>>>>>>> cssStyle = "border: thin solid #000000;";
>>>>>>> evenRowCSSClass = "none";
>>>>>>> oddRowCSSStyle = "background:lightgrey;";
>>>>>>> selectedRowCSSStyle = "font-weight: bold;";
>>>>>>> selectedRowCSSClass = "ajaxGridSelectedRow";
>>>>>>> rowIdentifier = number;
>>>>>>> dragHeaderOnly = true;
>>>>>>> columns = (
>>>>>>> {
>>>>>>> title = "Apple";
>>>>>>> keyPath = "personFullName 1";
>>>>>>>
>>>>>>> },
>>>>>>> {
>>>>>>> title = "Microsoft";
>>>>>>> keyPath = "personFullName 2";
>>>>>>> },
>>>>>>> {
>>>>>>> title = "Rim";
>>>>>>> keyPath = "personFullName 3";
>>>>>>> },
>>>>>>> {
>>>>>>> title = "Google";
>>>>>>> keyPath = "personFullName 4";
>>>>>>> }
>>>>>>> );
>>>>>>> sortOrder = (
>>>>>>> {
>>>>>>> keyPath = "personFullName 1";
>>>>>>> direction = "descending";
>>>>>>> },
>>>>>>> {
>>>>>>> keyPath = "personFullName 2";
>>>>>>> direction = "ascending";
>>>>>>> }
>>>>>>> );
>>>>>>>
>>>>>>> }
>>>>>>>
>>>>>>> Thanks
>>>>>>>
>>>>>>> Ray
>>>>>>>
>>>>>>> ========================================
>>>>>>>
>>>>>>> Message du : 19/05/2011
>>>>>>> De : "Chuck Hill " <[email protected]>
>>>>>>> A : [email protected]
>>>>>>> Copie à : [email protected]
>>>>>>> Sujet : Re: Using DataGrid in WO
>>>>>>>
>>>>>>>
>>>>>>> That is the default. You could make an extension to get that
>>>>>>> information elsewhere.
>>>>>>>
>>>>>>> Chuck
>>>>>>>
>>>>>>>
>>>>>>> On May 19, 2011, at 1:14 AM, <[email protected]> wrote:
>>>>>>>
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> it's necessary to use a .plist file to configure the AjaxGrid
>>>>>>>> configurationData?
>>>>>>>>
>>>>>>>>
>>>>>>>> ========================================
>>>>>>>>
>>>>>>>> Message du : 19/05/2011
>>>>>>>> De : "Stefan Klein " <[email protected]>
>>>>>>>> A : [email protected]
>>>>>>>> Copie à :
>>>>>>>> Sujet : Re: Using DataGrid in WO
>>>>>>>>
>>>>>>>>
>>>>>>>> You can find an online demo under
>>>>>>>> http://wiki.objectstyle.org/confluence/display/WONDER/Example+Applications.
>>>>>>>> Choose AjaxExample -> Online demo.
>>>>>>>>
>>>>>>>> Using the link AjaxExample you will see the source code.
>>>>>>>>
>>>>>>>> Stefan
>>>>>>>>
>>>>>>>> Am 19.05.11 08:41, schrieb [email protected]:
>>>>>>>>> Hi Chuck,
>>>>>>>>>
>>>>>>>>> Do you have an example how to use it?
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> ========================================
>>>>>>>>>
>>>>>>>>> Message du : 18/05/2011
>>>>>>>>> De : "Chuck Hill " <[email protected]>
>>>>>>>>> A : [email protected]
>>>>>>>>> Copie à : [email protected]
>>>>>>>>> Sujet : Re: Using DataGrid in WO
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> There is an AjaxGrid component in the Ajax framework in Wonder. That
>>>>>>>>> might give you what you want.
>>>>>>>>>
>>>>>>>>> Chuck
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On May 18, 2011, at 11:52 AM, [email protected] wrote:
>>>>>>>>>
>>>>>>>>>> it possible to use a DataGrid in a WebObjects project like Wonder or
>>>>>>>>>> other? Is there a special framework to use it?
>>>>>>>>>>
>>>>>>>>>> Thanks
>>>>>>>>>>
>>>>>>>>>> Ray
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Chuck Hill Senior Consultant / VP Development
>>>>>>>>>
>>>>>>>>> Come to WOWODC this July for unparalleled WO learning opportunities
>>>>>>>>> and real peer to peer problem solving! Network, socialize, and enjoy
>>>>>>>>> a great cosmopolitan city. See you there!
>>>>>>>>> http://www.wocommunity.org/wowodc11/
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> _______________________________________________ Do not post admin
>>>>>>>>> requests to the list. They will be ignored. Webobjects-dev mailing
>>>>>>>>> list ([email protected]) Help/Unsubscribe/Update
>>>>>>>>> your Subscription:
>>>>>>>>> http://lists.apple.com/mailman/options/webobjects-dev/stefan.klein%40buero-sde.de
>>>>>>>>> This email sent to [email protected]
>>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Chuck Hill Senior Consultant / VP Development
>>>>>>>
>>>>>>> Come to WOWODC this July for unparalleled WO learning opportunities and
>>>>>>> real peer to peer problem solving! Network, socialize, and enjoy a
>>>>>>> great cosmopolitan city. See you there!
>>>>>>> http://www.wocommunity.org/wowodc11/
>>>>>>>
>>>>>>>
>>>>>>
>>>>>> --
>>>>>> Chuck Hill Senior Consultant / VP Development
>>>>>>
>>>>>> Come to WOWODC this July for unparalleled WO learning opportunities and
>>>>>> real peer to peer problem solving! Network, socialize, and enjoy a
>>>>>> great cosmopolitan city. See you there!
>>>>>> http://www.wocommunity.org/wowodc11/
>>>>>>
>>>>>>
>>>>>
>>>>> --
>>>>> Chuck Hill Senior Consultant / VP Development
>>>>>
>>>>> Come to WOWODC this July for unparalleled WO learning opportunities and
>>>>> real peer to peer problem solving! Network, socialize, and enjoy a great
>>>>> cosmopolitan city. See you there! http://www.wocommunity.org/wowodc11/
>>>>>
>>>>>
>>>>
>>>> --
>>>> Chuck Hill Senior Consultant / VP Development
>>>>
>>>> Come to WOWODC this July for unparalleled WO learning opportunities and
>>>> real peer to peer problem solving! Network, socialize, and enjoy a great
>>>> cosmopolitan city. See you there! http://www.wocommunity.org/wowodc11/
>>>>
>>>>
>>>
>>> --
>>> Chuck Hill Senior Consultant / VP Development
>>>
>>> Come to WOWODC this July for unparalleled WO learning opportunities and
>>> real peer to peer problem solving! Network, socialize, and enjoy a great
>>> cosmopolitan city. See you there! http://www.wocommunity.org/wowodc11/
>>>
>>> <smime.p7s><ATT00001..txt>
>>
>
> --
> Chuck Hill Senior Consultant / VP Development
>
> Practical WebObjects - for developers who want to increase their overall
> knowledge of WebObjects or who are trying to solve specific problems.
> http://www.global-village.net/products/practical_webobjects
>
>
>
>
>
>
>
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list ([email protected])
> Help/Unsubscribe/Update your Subscription:
> http://lists.apple.com/mailman/options/webobjects-dev/mgargano%40me.com
>
> This email sent to [email protected]
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com
This email sent to [email protected]