[jira] Created: (WICKET-2584) Working with markup inheritance in panels

2009-11-19 Thread Madhuri (JIRA)
Working with markup inheritance in panels
-

 Key: WICKET-2584
 URL: https://issues.apache.org/jira/browse/WICKET-2584
 Project: Wicket
  Issue Type: Improvement
Reporter: Madhuri
 Fix For: 1.4.1


Hi I'm creating an application which is having a panel with a button. I want to 
add a text field when the user clicks on the button (on fly). Please help 
meproviding a quick start.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.



[jira] Created: (WICKET-2583) Warnings flood if incorrect credentials endered on SignInPage

2009-11-19 Thread Marat Radchenko (JIRA)
Warnings flood if incorrect credentials endered on SignInPage
-

 Key: WICKET-2583
 URL: https://issues.apache.org/jira/browse/WICKET-2583
 Project: Wicket
  Issue Type: Bug
  Components: wicket-auth-roles
Affects Versions: 1.4.3
Reporter: Marat Radchenko


WARNING: Couldn't resolve model type of 
Model:classname=[org.apache.wicket.model.PropertyModel]:nestedModel=[username = 
"admin"]:expression=[username] for [MarkupContainer [Component id = username]], 
please set the type yourself.
20.11.2009 0:04:11 org.apache.wicket.markup.html.form.AbstractTextComponent 
getModelType
WARNING: Couldn't resolve model type of 
Model:classname=[org.apache.wicket.model.PropertyModel]:nestedModel=[username = 
"admin"]:expression=[password] for [MarkupContainer [Component id = password]], 
please set the type yourself.


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.



[CONF] Apache Wicket > Page maps

2009-11-19 Thread confluence







 Page maps
 Page edited by Eugene Malan

 
  
 
 "Page" in this text means stateful page. Page maps do not store Stateless pages. "Page map" means IPageMap interface and its implementations.

Page maps

Page map is a part of Session. Basically it is used as an interface for storing pages and their versions. Page map stores instances of pages (including component tree) which were visited by user during the current session. So every time user goes to another page or changes page state, the page instance is stored in a page map. There can be one or more page maps in one http session where each page map corresponds to a browser tab (or a modal window if it contains a page and has had a separate page map set). Page maps are identified by their names.

In a sense, page maps can be viewed as an implementation detail of Session, since they are used only through IPageMap interface and some of their the functionality should be accessed only through Session.

Simple example

Here is a simple example of how page map is used from framework user's point of view. Suppose there is a home page which has two links: 

	"gotoNewPage" link creates new home page instance and displays it to user;
	"changeState" link changes page state creating new version of page.



The page code goes like this:


class MyHomePage extends WebPage {

public MyHomePage() {
add(new Link("changeState", new Model()) {
public void onClick() {
// this changes link state and therefore page state
this.setModelObject(new Random().nextInt());
}
});

add(new Link("gotoNewPage") {
public void onClick() {
setResponsePage(new MyHomePage());
}
});
}
}



Now if you go to home page, click once on "gotoNewPage" link, twice on "changeState" link and twice on "gotoNewPage" link again, the page map for the current session will look like this (it doesn't mean page map stores pages in a table or map):


 version \ id 
 0 
 1 
 2 
 3 


 0 
 page  
 page 
 page 
 page 


 1 
  
 page 
  
  


 2 
  
 page 
  
  


In the table "page" denotes page instance. Page id is a number unique within a page map or session (see ISessionSettings#setPageIdUniquePerSession()). All pages have id since they subclass Component class. Id is assigned to page automatically on creation.

The first instance of home page with id 0 and version 0 was created when you went to application home page (i.e. typed in browser a URL like http://localhost:8080/app). Then after clicking on "gotoNewPage" link, page with id 1 and version 0 was created and added to the page map. Next two clicks on "changeState" link added to the page map versions 1 and 2 of the home page. And finally two clicks on "gotoNewPage" link created and added another two home page instances to the page map.

There is another thing which is related to storing pages. It's that they can be accessed by page id and version using specific URL. In a simplified way this URL has the following form (see WebRequestCodingStrategy#addInterfaceParameters() javadoc for full description):


http:///?wicket:interface=:::


where:

	application URL is something like "localhost:8080/app";
	page map name is the name of the page map to be requested. Page map which is created by default has name "null" and can be omitted in the URL;
	page id is id of the page to retrieve (must be a number);
	page version is version of the page to retrieve (can be empty string which means version 0).



So for example to access second version of page instance with id 1 the following URL will be used:  http://localhost:8080/app/?wicket:interface=:1:2:::. If there is no page with specified id and version, then "Page Expired" page will be shown.

Similarly components like Links and Buttons, which provide callback to user code, use URLs which point to the page instance in a page map. For example "changeState " link on the second version of page with id 1 will have URL like this http://localhost:8080/app/?wicket:interface=:1:changeState:2:ILinkListener:: When this link is clicked Wicket will call onClick() handler for this link on the page instance with id 1 and version 2.

In this way pages generated by Wicket point to specific page instance on server.

Page map life cycle
Every session in Wicket has at least one page map. This page map is called default and has null name (see PageMap#isDefault()). Normally default page map is lazily created while constructing the first accessed page in session. Additional page maps may be created ("may be" means here that it is not necessarily the case):

	on opening tab in web-browser (see IPageSettings#getAutomaticMultiWindowSupport())
	on creating modal/popup window
	when using inline frames
	anywhere in code using PageMap#forName() method
	it's not normal usecase, but page map is also created whenever a URL is requested which contains name of not-ex

[jira] Commented: (WICKET-2579) tabbedpanel (and ajaxtabbedpanel) only submit the selected tab. A mode which instead submits all loaded tabs would be helpful.

2009-11-19 Thread Roger Armstrong (JIRA)

[ 
https://issues.apache.org/jira/browse/WICKET-2579?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12779970#action_12779970
 ] 

Roger Armstrong commented on WICKET-2579:
-

Actually, overriding newLink and providing an AjaxSubmitLink allows me to 
achieve pretty much what I wanted - I can display the validation errors and 
refuse to let the users switch to another tab until the form validates. As 
usual, Wicket provides a solution. Thanks!

> tabbedpanel (and ajaxtabbedpanel) only submit the selected tab. A mode which 
> instead submits all loaded tabs would be helpful.
> --
>
> Key: WICKET-2579
> URL: https://issues.apache.org/jira/browse/WICKET-2579
> Project: Wicket
>  Issue Type: Wish
>  Components: wicket-extensions
>Affects Versions: 1.4.3
>Reporter: Roger Armstrong
>Assignee: Igor Vaynberg
>
> If I want to split the contents of a form across multiple tabs (for example a 
> user profile form split into basic and advanced settings), there seems to be 
> no way to validate the form properly.
> The user should be able to fill out, say, first name and last name in the 
> basic tab, then switch to the advanced tab and fill out some settings there, 
> then click the Save button. If the user forgot to fill out a required field 
> on the basic, (say, email address), there's no way to handle this (because 
> the first tab is already gone when you switch to the second tab).
> I've tried to use an AjaxFormValidatingBehavior on blur of all form 
> components, but this is not a good solution since validation occurs on lost 
> focus instead of when the user clicks the Save button.
> What I would like would be that the TabbedPanel keeps all visited panels 
> around (but all hidden except the selected tab) so that they are all 
> submitted together. That way, you have lazy loading, but standard submit and 
> validate behavior (at the expense of keeping the loaded panels around).
> This seems like a fairly standard pattern for using a tabbed panel, so it 
> would seem useful to have it in the "standard" tab panel instead of everyone 
> having to reinvent it (like at 
> http://www.xaloon.org/blog/advanced-wicket-tabs-with-jquery).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.



[jira] Commented: (WICKET-1432) Detection of ajax transport type

2009-11-19 Thread JIRA

[ 
https://issues.apache.org/jira/browse/WICKET-1432?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12779916#action_12779916
 ] 

Rasmus Sööt commented on WICKET-1432:
-

Currently ajax doesn't work with IE if browser has High security settings and 
Javascript is enabled.  The problem is, that on High security settings ActiveX 
is only enabled for trusted sites.
To reproduce:
In IE7 or IE8 select Tools->Internet Options -> Security tab-> Set security 
level for Internet to High-> Click Custom level-> Scroll down to Scripting and 
set Active scripting to Enable-> Click OK, Yes, OK-> Open URL 
http://www.wicket-library.com/wicket-examples/ajax/editable-label -> Click on 
multiple lines of textual content - Text box does not open and IE gives the 
following error:
Message: Automation server can't create object
Line: 669
Char: 10
Code: 0
URI: 
http://www.wicket-library.com/wicket-examples/ajax/resources/org.apache.wicket.ajax.WicketAjaxReference/wicket-ajax.js

Could somebody look into this? I'm not familiar with the codebase, maybe 
something depends on having ActiveXObject for IE. Microsoft suggests using 
XMLHttpRequest  in IE7+ too, from 
http://msdn.microsoft.com/en-us/library/ms535874%28VS.85%29.aspx -
To support versions of Internet Explorer prior to Internet Explorer 7, use the 
following function to get the XMLHttpRequest object:
function getXMLHttpRequest() 
{
if (window.XMLHttpRequest) {
return new window.XMLHttpRequest;
}
else {
try {
return new ActiveXObject("MSXML2.XMLHTTP.3.0");
}
catch(ex) {
return null;
}
}
}

> Detection of ajax transport type
> 
>
> Key: WICKET-1432
> URL: https://issues.apache.org/jira/browse/WICKET-1432
> Project: Wicket
>  Issue Type: Improvement
>  Components: wicket
> Environment: Windows Mobile + Opera Mobile 9.5 Beta
>Reporter: Sven Rienstra
>Assignee: Matej Knopp
>Priority: Minor
>
> Wicket currently detects wich type of ajax transport has to be used by 
> detecting if the browser supports activeX. Wouldn't it be better to use 
> activeX only if the browser is IE and lower than version 7, because as far as 
> I know that's the only browser you would want to use activeX on. 
> The reason i'm asking is because i'm testing with the new Opera Mobile 
> browser (9.5 beta), ajax isn't working because wicket tries to use an activeX 
> object. I fixed this for now in my own enviremont but maybe it's good to 
> change this in a future release ?
> Patch file:
> Index: wicket-ajax.js
> ===
> --- wicket-ajax.js(revision 638254)
> +++ wicket-ajax.js(working copy)
> @@ -652,7 +652,7 @@
>   // Creates a new instance of a XmlHttpRequest
>   createTransport: function() {
>   var transport = null;
> - if (window.ActiveXObject) {
> + if (Wicket.Browser.isIELessThan7()) {
>   transport = new ActiveXObject("Microsoft.XMLHTTP");
>   } else if (window.XMLHttpRequest) {
>   transport = new XMLHttpRequest();

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.



[jira] Commented: (WICKET-2579) tabbedpanel (and ajaxtabbedpanel) only submit the selected tab. A mode which instead submits all loaded tabs would be helpful.

2009-11-19 Thread Roger Armstrong (JIRA)

[ 
https://issues.apache.org/jira/browse/WICKET-2579?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12779891#action_12779891
 ] 

Roger Armstrong commented on WICKET-2579:
-

Thanks Erik - I hope its not weird - we've being doing it that way for years. 
Regarding Igor's comment - lazy loading is important (since relatively 
slow-loading options like lists will also be moved to their own tabs), so 
loading all the tabs initially and then just switching on the client side is 
not what I'm arguing for.  OTOH, validating across tabs is problematic for the 
user (how to show him where his errors are if they're in more than one tab?), 
so maybe the correct way is to force him to confirm changes before switching 
tabs (when a change is made, disable all other tabs and show a save button).

> tabbedpanel (and ajaxtabbedpanel) only submit the selected tab. A mode which 
> instead submits all loaded tabs would be helpful.
> --
>
> Key: WICKET-2579
> URL: https://issues.apache.org/jira/browse/WICKET-2579
> Project: Wicket
>  Issue Type: Wish
>  Components: wicket-extensions
>Affects Versions: 1.4.3
>Reporter: Roger Armstrong
>Assignee: Igor Vaynberg
>
> If I want to split the contents of a form across multiple tabs (for example a 
> user profile form split into basic and advanced settings), there seems to be 
> no way to validate the form properly.
> The user should be able to fill out, say, first name and last name in the 
> basic tab, then switch to the advanced tab and fill out some settings there, 
> then click the Save button. If the user forgot to fill out a required field 
> on the basic, (say, email address), there's no way to handle this (because 
> the first tab is already gone when you switch to the second tab).
> I've tried to use an AjaxFormValidatingBehavior on blur of all form 
> components, but this is not a good solution since validation occurs on lost 
> focus instead of when the user clicks the Save button.
> What I would like would be that the TabbedPanel keeps all visited panels 
> around (but all hidden except the selected tab) so that they are all 
> submitted together. That way, you have lazy loading, but standard submit and 
> validate behavior (at the expense of keeping the loaded panels around).
> This seems like a fairly standard pattern for using a tabbed panel, so it 
> would seem useful to have it in the "standard" tab panel instead of everyone 
> having to reinvent it (like at 
> http://www.xaloon.org/blog/advanced-wicket-tabs-with-jquery).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.



[jira] Created: (WICKET-2582) org.apache.wicket.markup.html.form.Check should call Component.isEnabledInHierarchy()

2009-11-19 Thread Michael Frankerl (JIRA)
org.apache.wicket.markup.html.form.Check should call 
Component.isEnabledInHierarchy()
-

 Key: WICKET-2582
 URL: https://issues.apache.org/jira/browse/WICKET-2582
 Project: Wicket
  Issue Type: Bug
  Components: wicket
Affects Versions: 1.4.3
 Environment: wicket 1.4.3
Reporter: Michael Frankerl


The Implementation of  onComponentTag() in 
org.apache.wicket.markup.html.form.Check should call 
Component.isEnabledInHierarchy() instead of  
"if (!isActionAuthorized(ENABLE) || !isEnabled() || !group.isEnabled())". This 
would pass-through the ancestors "enabled"-flag to the Check Component.

For example component path: " WebMarkupContainer : CheckGroup : Check "
Whereas the WebMarkupContainer is disabled. In the current implementation the 
Check ignores WebMarkupContainer "enabled"-flag.


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.



[jira] Commented: (WICKET-2579) tabbedpanel (and ajaxtabbedpanel) only submit the selected tab. A mode which instead submits all loaded tabs would be helpful.

2009-11-19 Thread Erik van Oosten (JIRA)

[ 
https://issues.apache.org/jira/browse/WICKET-2579?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12779860#action_12779860
 ] 

Erik van Oosten commented on WICKET-2579:
-

Roger, please note that what you ask is not weird, its just that it can not be 
accomplish with the current TabbedPanel. Another component that does what you 
ask would be welcome of course.

> tabbedpanel (and ajaxtabbedpanel) only submit the selected tab. A mode which 
> instead submits all loaded tabs would be helpful.
> --
>
> Key: WICKET-2579
> URL: https://issues.apache.org/jira/browse/WICKET-2579
> Project: Wicket
>  Issue Type: Wish
>  Components: wicket-extensions
>Affects Versions: 1.4.3
>Reporter: Roger Armstrong
>Assignee: Igor Vaynberg
>
> If I want to split the contents of a form across multiple tabs (for example a 
> user profile form split into basic and advanced settings), there seems to be 
> no way to validate the form properly.
> The user should be able to fill out, say, first name and last name in the 
> basic tab, then switch to the advanced tab and fill out some settings there, 
> then click the Save button. If the user forgot to fill out a required field 
> on the basic, (say, email address), there's no way to handle this (because 
> the first tab is already gone when you switch to the second tab).
> I've tried to use an AjaxFormValidatingBehavior on blur of all form 
> components, but this is not a good solution since validation occurs on lost 
> focus instead of when the user clicks the Save button.
> What I would like would be that the TabbedPanel keeps all visited panels 
> around (but all hidden except the selected tab) so that they are all 
> submitted together. That way, you have lazy loading, but standard submit and 
> validate behavior (at the expense of keeping the loaded panels around).
> This seems like a fairly standard pattern for using a tabbed panel, so it 
> would seem useful to have it in the "standard" tab panel instead of everyone 
> having to reinvent it (like at 
> http://www.xaloon.org/blog/advanced-wicket-tabs-with-jquery).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.