Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "Scout/Tutorial/Reorganize the tree and add a webservice"
(→Add a node page) |
(→Add a node page) |
||
Line 51: | Line 51: | ||
{{note|No name?|Indeed, this particular ''node page'' does not need a name. That's because the ''name'' of a ''page'' is only shown if its parent is an ''outline'' or a ''page with nodes''. If the parent is a ''page with table'', '''the selected row replaces the name of the child table'''.}} | {{note|No name?|Indeed, this particular ''node page'' does not need a name. That's because the ''name'' of a ''page'' is only shown if its parent is an ''outline'' or a ''page with nodes''. If the parent is a ''page with table'', '''the selected row replaces the name of the child table'''.}} | ||
− | Now go to the newly created '''CompanyDetailsNodePage''', | + | Now go to the newly created '''CompanyDetailsNodePage''', click through to the '''Child Pages''' folder, right-click and pick '''Add Page...''' Pick the '''PersonTablePage''' from the list and click ''Finish''. |
{{note|Child Page or Child Pages?|Note how there is ''only child page'' for a '''page with table''' where as there are ''multiple child pages'' for a ''page with nodes''.}} | {{note|Child Page or Child Pages?|Note how there is ''only child page'' for a '''page with table''' where as there are ''multiple child pages'' for a ''page with nodes''.}} | ||
+ | |||
+ | If you attempt to test your application, you'll notice a problem: '''Every person is listed under every company'''! | ||
+ | |||
+ | Why is that? | ||
+ | |||
+ | We interrupted "the flow data": When the user picks a company from the ''CompanyTablePage'', the appropriate child page is created. When we created {{ScoutLink|Tutorial|Write The Second Page|our second page}}, we made sure to pass the '''value''' of the ''CompanyNrColumn'' along. The newly introduced ''CompanyDetailsNodePage'' needs to be fixed! | ||
+ | |||
+ | Return to the '''CompanyDetailsNodePage''' and click through to '''Variables'''. Pick '''Create New Property Bean...''' from the context menu, use '''companyNr'' as the ''name'' and '''Long''' as the ''bean type''. | ||
+ | |||
+ | Click on the '''Exec Create Child Pages''' link on the ''Properties'' view of the '''CompanyDetailsNodePage'''. Change the code as follows: | ||
+ | |||
+ | <source lang="java"> | ||
+ | @Override | ||
+ | protected void execCreateChildPages(Collection<IPage> pageList) throws ProcessingException { | ||
+ | PersonTablePage personTablePage = new PersonTablePage(); | ||
+ | personTablePage.setCompanyNr(getCompanyNr()); | ||
+ | pageList.add(personTablePage); | ||
+ | |||
+ | } | ||
+ | </source> | ||
+ | |||
+ | Return to the '''CompanyTablePage''' and click on the '''Exec Create Child Page''' link on the ''Properties'' view. Change the code as follows: | ||
+ | |||
+ | <source lang="java"> | ||
+ | @Override | ||
+ | protected IPage execCreateChildPage(ITableRow row) throws ProcessingException { | ||
+ | CompanyDetailsNodePage childPage=new CompanyDetailsNodePage(); | ||
+ | childPage.setCompanyNr(getTable().getCompanyNrColumn().getValue(row)); | ||
+ | return childPage; | ||
+ | } | ||
+ | </source> |
Revision as of 06:36, 19 October 2010
We started out with an application having two table pages. Notice how the list of persons comes just beneath the list of companies. If we want to show different named folders such as "persons" and "search resuilts" for a company, we need to add a page with nodes.
Standard Outline │ ├─Company Table Page │ │ │ └─Person Table Page │ └─Person Table Page |
⇒ |
Standard Outline │ ├─Company Table Page │ │ │ └─Company Details Node Page ← new │ │ │ ├─Person Table Page │ │ │ └─Bing Table Page ← new │ └─Person Table Page |
Add a node page
In a first step, we're going to aim for the following intermediary structure:
Standard Outline │ ├─Company Table Page │ │ │ └─Company Details Node Page ← new │ │ │ └─Person Table Page │ └─Person Table Page
Return to the CompanyTablePage and click on the red cross (✖) next to Exec Create Child Page in order to delete it.
Once you have deleted the method, you can right-click on the Child Page folder and pick New Page...
Use AbstractTableWithNodes as your template. There's no need to give it a name. Use CompanyDetailsNodePage as the type name.
Now go to the newly created CompanyDetailsNodePage, click through to the Child Pages folder, right-click and pick Add Page... Pick the PersonTablePage from the list and click Finish.
If you attempt to test your application, you'll notice a problem: Every person is listed under every company!
Why is that?
We interrupted "the flow data": When the user picks a company from the CompanyTablePage, the appropriate child page is created. When we created The Scout documentation has been moved to https://eclipsescout.github.io/., we made sure to pass the value of the CompanyNrColumn along. The newly introduced CompanyDetailsNodePage needs to be fixed!
Return to the CompanyDetailsNodePage' and click through to Variables. Pick Create New Property Bean... from the context menu, use companyNr as the name and Long as the bean type.
Click on the Exec Create Child Pages link on the Properties view of the CompanyDetailsNodePage. Change the code as follows:
@Override protected void execCreateChildPages(Collection<IPage> pageList) throws ProcessingException { PersonTablePage personTablePage = new PersonTablePage(); personTablePage.setCompanyNr(getCompanyNr()); pageList.add(personTablePage); }
Return to the CompanyTablePage and click on the Exec Create Child Page link on the Properties view. Change the code as follows:
@Override protected IPage execCreateChildPage(ITableRow row) throws ProcessingException { CompanyDetailsNodePage childPage=new CompanyDetailsNodePage(); childPage.setCompanyNr(getTable().getCompanyNrColumn().getValue(row)); return childPage; }