Failing to remove item from list when drag and dropping

2010-04-16 Thread Johan Haleby

Hi, 

I have a use case that reads as follows: I need two lists next to each
other. When starting up the left list is empty and I add items to it by
dragging them from the right list and dropping them on the left. These items
should be copied, (i.e. _not_ moved, the right list should be static) from
the right list into the selected position in the left list. It should also
be possible to reorder the items in the left list using drag and drop. The
last thing is that you should be able to remove items from the left list by
dragging and dropping them back to the right list. Since the right list is
static the item should _not_ be added to the right list but rather just
removed from the left list. 

After some investigation I've settled on using the YuiDDListView (from the
wicket-yui project) which  extends from a standard Wicket ListView. I've
chosen this component since it supports positioning items in the list (i.e.
you know to which index you dropped the item in the list). After MUCH
hacking around I've managed to get most things working. There are mainly two
things left and here I would really appreciate some help: 

1) I cannot seem to remove _the last_ item in the left list (i.e. by drag
and dropping to the right list). It works fine for all other items but for
the last item it fails saying e.g.: 

Caused by: org.apache.wicket.WicketRuntimeException: component
tabs:panel:panel:list:items:0 not found on page
com.mycompany.MyPageCompany[id = 4], listener interface =
[RequestListenerInterface name=IBehaviorListener, method=public abstract
void org.apache.wicket.behavior.IBehaviorListener.onRequest()] 
at
org.apache.wicket.request.AbstractRequestCycleProcessor.resolveListenerInterfaceTarget(AbstractRequestCycleProcessor.java:426)
 
at
org.apache.wicket.request.AbstractRequestCycleProcessor.resolveRenderedPage(AbstractRequestCycleProcessor.java:471)
 
at
org.apache.wicket.protocol.http.WebRequestCycleProcessor.resolve(WebRequestCycleProcessor.java:144)
 
... 28 more 

What causes this is that in the onDrop method in the left list I remove the
dropped item from the list if it's dropped on the right list. Why is this
happening? What's the best way to resolve it? 

2) When I drag and item from the left to the right it looks like the item is
added to the right list until I reload the page. I figure could be a
javascript error since the javascript doesn't understand that the item
shouldn't be added to the right list at all (it should instead be removed
from the left list). What would be the best way to resolve this? 

I'm using Wicket 1.4.1. 

/Johan
-- 
View this message in context: 
http://n4.nabble.com/Failing-to-remove-item-from-list-when-drag-and-dropping-tp1960968p1960968.html
Sent from the Wicket - User mailing list archive at Nabble.com.

-
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org



Re: AjaxSubmitLink javadocs

2010-04-16 Thread Xavier López
Thanks for the answer, Jeremy.

I just created issue https://issues.apache.org/jira/browse/WICKET-2837.

I'm with you on what you state, it was obvious the only possible way to do a
submit without JS is to have an html submit mechanism, anyway, I was just
being cautious in case I was missing something.
I'm just glad to contribute improving this great framework, even though it's
on a lesser thing like this.

Cheers,
Xavier


2010/4/16 Jeremy Thomerson jer...@wickettraining.com

 This appears to be an issue in the documentation of the AjaxSubmitLink.  I
 just checked and the documentation is still the same in 1.4.  I will try to
 verify this and fix it tomorrow.  In the meantime, it would be helpful if
 you opened a JIRA issue to keep track of this (post the link back to this
 thread).

 Anyway, the documentation is written as if this were a fallback component
 (i.e. AjaxFallbackLink).  However, it is not.  Obviously, if you do not
 have
 JS enabled, you can not submit a form with a link in the browser.  You
 could
 only submit it with a submit button.

 --
 Jeremy Thomerson
 http://www.wickettraining.com



 On Thu, Apr 15, 2010 at 4:12 AM, Xavier López xavil...@gmail.com wrote:

  Hi,
 
  I'm a liitle confused about AjaxSubmitLink's JavaDoc, and the code inside
  it... I'm using Wicket 1.3.6:
 
  If/when javascript is turned off in the browser, or it doesn't support
   javascript, then the
   browser will not respond to the onclick event, using the href directly.
   Wicket will then use a
   normal request target, and call the serverside onClick with a null
 {...@link
   AjaxRequestTarget}.
  
 
  First question is, does it really mean 'serverside onClick' ? Or should
 it
  read 'serverside onSubmit' ?
 
  And then, in the code, I see :
 
  protected void onComponentTag(ComponentTag tag)
   {
   super.onComponentTag(tag);
  
   if (isLinkEnabled())
   {
   if (tag.getName().toLowerCase().equals(a))
   {
   tag.put(href, #);
   }
   }
   else
   {
   disableLink(tag);
   }
   }
  
 
  So it seems this component never gets to have anything else than # in its
  href, so it won't do anything when js is not enabled...
 
  Is this an error in the documentation ?
 
  Thanks,
  Xavier
 




-- 
Klein bottle for rent--inquire within.


Detect bookmark access to nonbookmarkablepages

2010-04-16 Thread Xavier López
Hi there,

I'm trying to find an elegant way to detect the cases where a user tries to
access a nonbookmarkablepage with a bookmark. From the stack trace produced
in this case, I see this situation is handled in
DefaultPageFactory#newPage(Class pageClass), like this:


catch (NoSuchMethodException e)
{
// a bit of a hack here..
Constructor constructor = constructor(pageClass,
PageParameters.class);
if (constructor != null)
{
return newPage(constructor, new PageParameters());
}
else
{
throw new WicketRuntimeException(Unable to create page from
 + pageClass +
. Class does not have a default contructor, e);
}
}


I would like to present a custom page explaining the circumstances with a
nice link to the starting place where to navigate from.
I don't really like treating this situation as a WicketRuntimeException and
have it bubbling up to an internalerrorpage, because of the little
information on the exception thrown (i don't like identifying it by its
text, or nested exception type).

Unfortunately, DefaultPageFactory#newPage(Class pageClass) is final, so this
behavior can not be overriden. Is providing a custom implementation of
IPageFactory the best approach to this issue ? Any other way around ?

Cheers,
Xavier


Re: Type Inference for Wicket 1.4

2010-04-16 Thread James Carman
And, nothing is stopping you from doing something like this in your
own code.  I have a class called ComponentUtils where I put stuff like
this.  I have two methods:

public static T extends Serializable IModelT modelOf(T bean);
public static T extends Serializable IModelT modelFor(ClassT
beanClass); // This will instantiate the object for you.

I also have:

public static void detachAllModelFields(Component c);

With static imports, you can just use these methods like they're in
your classes.

On Fri, Apr 16, 2010 at 1:21 AM, Jeremy Thomerson
jer...@wickettraining.com wrote:
 This is the key - and it has been discussed before (in the many grueling 1.4
 conversations).  The short of it is that with private constructors there's a
 huge change and an inability to extend.  And without the private
 constructors, the static methods are dumb and extraneous because you would
 need hundreds of them, and you would need even more of them on your extended
 model and component classes.

 --
 Jeremy Thomerson
 http://www.wickettraining.com



 On Thu, Apr 15, 2010 at 8:51 AM, Thomas Kappler
 thomas.kapp...@isb-sib.chwrote:

 On 04/15/10 13:06, James Perry wrote:

 I can sympathise with that. However I don't think it would be a
 maintenance nightmare if the constructors are set to private; but that
 would mean a dramatic API change for such convenience and I'm guessing
 you're not willing to do this.


 Apart from the huge change for questionable benefit, that would also remove
 inheritance, which is essential to the Wicket way, because you can't extend
 a class with private constructors only. If you can, get a hold of Bloch,
 Effective Java, and read the insightful chapter on the constructor vs.
 static factory method trade-off.

 -- Thomas




 Best,
 James.

 On 14 April 2010 17:01, Igor Vaynbergigor.vaynb...@gmail.com  wrote:

 you are going to have one factory method for each constructor, its
 going to be a pita to maintain. not something we will want in core.

 -igor

 On Wed, Apr 14, 2010 at 8:51 AM, James Perry
 james.austin.pe...@gmail.com  wrote:

 I am looking to migrate from Wicket 1.3 and Wicket 1.4 and I really
 like the type-safe goodies but I do not like its verbosity. I was
 thinking of writing a patch that provides factories to improve the
 brevity by type inference of the generic invariant.

 This is an example of my idea:

 ModelMySuperLongNameForASimpleFooObject  model = Model.newModel();

 public staticT  ModelT  newModel() {
    return new ModelT();
 }

 Feedback welcomed. :-)

 --
 Best,
 James.

 -
 To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
 For additional commands, e-mail: users-h...@wicket.apache.org



 -
 To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
 For additional commands, e-mail: users-h...@wicket.apache.org



 -
 To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
 For additional commands, e-mail: users-h...@wicket.apache.org



 --
 ---
  Thomas Kappler                        thomas.kapp...@isb-sib.ch
  Swiss Institute of Bioinformatics         Tel: +41 22 379 51 89
  CMU, rue Michel Servet 1
  1211 Geneve 4
  Switzerland                              http://www.uniprot.org

 ---

 -
 To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
 For additional commands, e-mail: users-h...@wicket.apache.org




-
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org



Bug in Page refresh?

2010-04-16 Thread Wolfgang Grossinger
We have a DropDownChoice to change the language of a page (the language 
in mapped through an enum). The handler to change the code is as follows.


@Override
protected void onSubmit(AjaxRequestTarget target) {

getSession().setLocale(getLanguage().getObject().getLocale());

setResponsePage(getPage());
}

We just have 3 pages and a login page. The code works on 2 of 3 pages 
but I don't know why it doesn't work on the third page (the code to find 
the language and to get the current page seems also to be correct and 
working). My question is does anybody have some hints what I could do wrong?


Regards,

Wolfgang



-
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org



Re: Type Inference for Wicket 1.4

2010-04-16 Thread Erdinc
Or use wicket as I explained on this page :)

http://java.dzone.com/articles/faster-development-easywicket








From: James Carman jcar...@carmanconsulting.com
To: users@wicket.apache.org
Sent: Fri, April 16, 2010 2:05:12 PM
Subject: Re: Type Inference for Wicket 1.4

And, nothing is stopping you from doing something like this in your
own code.  I have a class called ComponentUtils where I put stuff like
this.  I have two methods:

public static T extends Serializable IModelT modelOf(T bean);
public static T extends Serializable IModelT modelFor(ClassT
beanClass); // This will instantiate the object for you.

I also have:

public static void detachAllModelFields(Component c);

With static imports, you can just use these methods like they're in
your classes.

On Fri, Apr 16, 2010 at 1:21 AM, Jeremy Thomerson
jer...@wickettraining.com wrote:
 This is the key - and it has been discussed before (in the many grueling 1.4
 conversations).  The short of it is that with private constructors there's a
 huge change and an inability to extend.  And without the private
 constructors, the static methods are dumb and extraneous because you would
 need hundreds of them, and you would need even more of them on your extended
 model and component classes.

 --
 Jeremy Thomerson
 http://www.wickettraining.com



 On Thu, Apr 15, 2010 at 8:51 AM, Thomas Kappler
 thomas.kapp...@isb-sib.chwrote:

 On 04/15/10 13:06, James Perry wrote:

 I can sympathise with that. However I don't think it would be a
 maintenance nightmare if the constructors are set to private; but that
 would mean a dramatic API change for such convenience and I'm guessing
 you're not willing to do this.


 Apart from the huge change for questionable benefit, that would also remove
 inheritance, which is essential to the Wicket way, because you can't extend
 a class with private constructors only. If you can, get a hold of Bloch,
 Effective Java, and read the insightful chapter on the constructor vs.
 static factory method trade-off.

 -- Thomas




 Best,
 James.

 On 14 April 2010 17:01, Igor Vaynbergigor.vaynb...@gmail.com  wrote:

 you are going to have one factory method for each constructor, its
 going to be a pita to maintain. not something we will want in core.

 -igor

 On Wed, Apr 14, 2010 at 8:51 AM, James Perry
 james.austin.pe...@gmail.com  wrote:

 I am looking to migrate from Wicket 1.3 and Wicket 1.4 and I really
 like the type-safe goodies but I do not like its verbosity. I was
 thinking of writing a patch that provides factories to improve the
 brevity by type inference of the generic invariant.

 This is an example of my idea:

 ModelMySuperLongNameForASimpleFooObject  model = Model.newModel();

 public staticT  ModelT  newModel() {
return new ModelT();
 }

 Feedback welcomed. :-)

 --
 Best,
 James.

 -
 To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
 For additional commands, e-mail: users-h...@wicket.apache.org



 -
 To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
 For additional commands, e-mail: users-h...@wicket.apache.org



 -
 To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
 For additional commands, e-mail: users-h...@wicket.apache.org



 --
 ---
  Thomas Kapplerthomas.kapp...@isb-sib.ch
  Swiss Institute of Bioinformatics Tel: +41 22 379 51 89
  CMU, rue Michel Servet 1
  1211 Geneve 4
  Switzerland  http://www.uniprot.org

 ---

 -
 To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
 For additional commands, e-mail: users-h...@wicket.apache.org




-
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org


  

set focus on a field when opening a ModalWindow

2010-04-16 Thread Bernard

Hello,
Sorry to come back with this item, but I can't figure out how to set focus
on a form element when opening a ModalWindow (iframe version).

I tried to use target.focusComponent() within the calling page, but as
components are created inside the called page, I can't have the right
focusComponent() parameter.

I also tried the FocusBehavior() class found on the wiki, but it works only
for regular forms, not Ajax.

I finally tried some javascript stuff within my called html page (something
like frames[0].document.forms[0].elements[1].focus();), but this don't work
bacause the iframe is not ready when my javascript is called.

Does somebody knows how to set focus on my first form field in my modal
window ?

Best regards,
Bernard
-- 
View this message in context: 
http://n4.nabble.com/set-focus-on-a-field-when-opening-a-ModalWindow-tp1989918p1989918.html
Sent from the Wicket - User mailing list archive at Nabble.com.

-
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org



WicketRuntimeException: There is no application attached to current thread

2010-04-16 Thread Martin Asenov
Hello guys!
In a page, I have a button. The button starts a thread, just like this, but I 
get the exception in the bottom. Here is some code:
  @Override
  protected void onSubmit(final AjaxRequestTarget target, Form? form) {
final FileUpload fileUpload = fileUploadField.getFileUpload();
if (fileUpload != null) {

  final PhonebookImporter importer = new 
PhonebookImporter(((AppSession) Session.get()).getManager());

  logger.debug(User  + context.getEmail()
  +  uploaded an import file -  + fileUpload.getClientFileName());

  byte[] bytes = fileUpload.getBytes();

  String uploadFolder;

  try {
uploadFolder = System.getenv(CATALINA_HOME)
+ props.get(uploadFolder);
  } catch (SMSOfficeException e1) {
logger.error(Could not resolve property!, e1);
uploadFolder = 
/home/project/services/apache-tomcat-6.0.20/webapps/ROOT/temp/;
  }

  User currentUser = ((AppSession) Session.get()).getContext()
  .getUser();

  final File uploaded = new File(uploadFolder
  + String.valueOf(currentUser.getId()) + / + 
fileUpload.getClientFileName());

  uploaded.getParentFile().mkdirs();

  try {
FileOutputStream fos = new FileOutputStream(uploaded, false);
fos.write(bytes);
fos.close();
logger.info(File written on  + uploaded.getAbsolutePath());
  } catch (IOException e) {
logger.error(I/O Exception occurred!, e);
return;
  }

  final ImportListener listener = new ImportListener() {

public void info(String object, ImportMessage type) {
  textModel.append(getString(type.toString()) + object + \n);
}

  };

  importer.setUser(((AppSession) Session.get()).getContext().getUser());
  importer.setDomain(((AppSession) Session.get()).getContext()
  .getDomain());

  importer.addImportListener(listener);


  new Thread(new Runnable() {

public void run() {

  try {

boolean flag = importer.importContacts(uploaded, null);

if (flag) {
  BulkImport.this.info(BulkImport.this.getString(imported));
  logger.debug(User  + context.getEmail()
  +  managed to import the contacts!);
} else {
  BulkImport.this.error(BulkImport.this.getString(enc_error));
  logger.error(User  + context.getEmail()
  +  did NOT manage to import the contacts!);
}
  } catch (Exception e) {
logger.error(User  + context.getEmail()
+  did NOT manage to import the contacts!, e);

BulkImport.this.error(BulkImport.this.getString(not_imported));
  }

  importer.removeImportListener(listener);
  target.addComponent(feed);

}

  }).start();

} else {
  BulkImport.this.error(getString(no_uploaded_file));
}

  }
And the exception:
16-04-2010 14:44:20,175 ERROR 
com.company.project.ui.bulk.BulkImport$2$2.run:183 - User mase...@velti.com did 
NOT manage to import the contacts!
   org.apache.wicket.WicketRuntimeException: There is no application attached 
to current thread Thread-17
at org.apache.wicket.Application.get(Application.java:179)
at org.apache.wicket.Component.getApplication(Component.java:1323)
at org.apache.wicket.Component.getLocalizer(Component.java:1436)
at org.apache.wicket.Component.getString(Component.java:1903)
at org.apache.wicket.Component.getString(Component.java:1890)
at com. 
company.project.ui.bulk.BulkImport$2$1.info(BulkImport.java:153)
at com. 
company.project.phonebook.bulk.PhonebookImporter.fireImportInfo(PhonebookImporter.java:76)
at com. 
company.project.core.ManagerBean.saveContacts(ManagerBean.java:212)
at com. 
company.project.core.ManagerBean$$FastClassByCGLIB$$a2c3fbf0.invoke(generated)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191)
at 
org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:692)
at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at 
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at 
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
at 

Re: WicketRuntimeException: There is no application attached to current thread

2010-04-16 Thread Cemal Bayramoglu
Component's getString method will try to get the laocalizer from the
Application, and the Application instance (singleton for a Wicket
web-app) is bound to the thread processing your request, not to the
one you have spawned off of it

Regards - Cemal
jWeekend
OO  Java Technologies, Wicket
Consulting, Development, Training
http://jWeekend.com
.

2010/4/16 Martin Asenov mase...@velti.com:
 Hello guys!
 In a page, I have a button. The button starts a thread, just like this, but I 
 get the exception in the bottom. Here is some code:
     �...@override
      protected void onSubmit(final AjaxRequestTarget target, Form? form) {
        final FileUpload fileUpload = fileUploadField.getFileUpload();
        if (fileUpload != null) {

          final PhonebookImporter importer = new 
 PhonebookImporter(((AppSession) Session.get()).getManager());

          logger.debug(User  + context.getEmail()
              +  uploaded an import file -  + 
 fileUpload.getClientFileName());

          byte[] bytes = fileUpload.getBytes();

          String uploadFolder;

          try {
            uploadFolder = System.getenv(CATALINA_HOME)
                + props.get(uploadFolder);
          } catch (SMSOfficeException e1) {
            logger.error(Could not resolve property!, e1);
            uploadFolder = 
 /home/project/services/apache-tomcat-6.0.20/webapps/ROOT/temp/;
          }

          User currentUser = ((AppSession) Session.get()).getContext()
              .getUser();

          final File uploaded = new File(uploadFolder
              + String.valueOf(currentUser.getId()) + / + 
 fileUpload.getClientFileName());

          uploaded.getParentFile().mkdirs();

          try {
            FileOutputStream fos = new FileOutputStream(uploaded, false);
            fos.write(bytes);
            fos.close();
            logger.info(File written on  + uploaded.getAbsolutePath());
          } catch (IOException e) {
            logger.error(I/O Exception occurred!, e);
            return;
          }

          final ImportListener listener = new ImportListener() {

            public void info(String object, ImportMessage type) {
              textModel.append(getString(type.toString()) + object + \n);
            }

          };

          importer.setUser(((AppSession) 
 Session.get()).getContext().getUser());
          importer.setDomain(((AppSession) Session.get()).getContext()
              .getDomain());

          importer.addImportListener(listener);


          new Thread(new Runnable() {

            public void run() {

              try {

                boolean flag = importer.importContacts(uploaded, null);

                if (flag) {
                  BulkImport.this.info(BulkImport.this.getString(imported));
                  logger.debug(User  + context.getEmail()
                      +  managed to import the contacts!);
                } else {
                  
 BulkImport.this.error(BulkImport.this.getString(enc_error));
                  logger.error(User  + context.getEmail()
                      +  did NOT manage to import the contacts!);
                }
              } catch (Exception e) {
                logger.error(User  + context.getEmail()
                    +  did NOT manage to import the contacts!, e);
                
 BulkImport.this.error(BulkImport.this.getString(not_imported));
              }

              importer.removeImportListener(listener);
              target.addComponent(feed);

            }

          }).start();

        } else {
          BulkImport.this.error(getString(no_uploaded_file));
        }

      }
 And the exception:
 16-04-2010 14:44:20,175 ERROR 
 com.company.project.ui.bulk.BulkImport$2$2.run:183 - User mase...@velti.com 
 did NOT manage to import the contacts!
   org.apache.wicket.WicketRuntimeException: There is no application attached 
 to current thread Thread-17
            at org.apache.wicket.Application.get(Application.java:179)
            at org.apache.wicket.Component.getApplication(Component.java:1323)
            at org.apache.wicket.Component.getLocalizer(Component.java:1436)
            at org.apache.wicket.Component.getString(Component.java:1903)
            at org.apache.wicket.Component.getString(Component.java:1890)
            at com. 
 company.project.ui.bulk.BulkImport$2$1.info(BulkImport.java:153)
            at com. 
 company.project.phonebook.bulk.PhonebookImporter.fireImportInfo(PhonebookImporter.java:76)
            at com. 
 company.project.core.ManagerBean.saveContacts(ManagerBean.java:212)
            at com. 
 company.project.core.ManagerBean$$FastClassByCGLIB$$a2c3fbf0.invoke(generated)
            at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191)
            at 
 org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:692)
            at 
 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
          

Re: WicketRuntimeException: There is no application attached to current thread

2010-04-16 Thread Ernesto Reinaldo Barreiro
Do not use make references to components on the thread. Instead create an
instance of runnable to which you pass all the information you need and use
a kind of context to communicate with the Web layer if you need to pass
back information.

Best,

Ernesto


2010/4/16 Martin Asenov mase...@velti.com

 Hello guys!
 In a page, I have a button. The button starts a thread, just like this, but
 I get the exception in the bottom. Here is some code:
  @Override
  protected void onSubmit(final AjaxRequestTarget target, Form? form)
 {
final FileUpload fileUpload = fileUploadField.getFileUpload();
if (fileUpload != null) {

  final PhonebookImporter importer = new
 PhonebookImporter(((AppSession) Session.get()).getManager());

  logger.debug(User  + context.getEmail()
  +  uploaded an import file -  +
 fileUpload.getClientFileName());

  byte[] bytes = fileUpload.getBytes();

  String uploadFolder;

  try {
uploadFolder = System.getenv(CATALINA_HOME)
+ props.get(uploadFolder);
  } catch (SMSOfficeException e1) {
logger.error(Could not resolve property!, e1);
uploadFolder =
 /home/project/services/apache-tomcat-6.0.20/webapps/ROOT/temp/;
  }

  User currentUser = ((AppSession) Session.get()).getContext()
  .getUser();

  final File uploaded = new File(uploadFolder
  + String.valueOf(currentUser.getId()) + / +
 fileUpload.getClientFileName());

  uploaded.getParentFile().mkdirs();

  try {
FileOutputStream fos = new FileOutputStream(uploaded, false);
fos.write(bytes);
fos.close();
logger.info(File written on  + uploaded.getAbsolutePath());
  } catch (IOException e) {
logger.error(I/O Exception occurred!, e);
return;
  }

  final ImportListener listener = new ImportListener() {

public void info(String object, ImportMessage type) {
  textModel.append(getString(type.toString()) + object + \n);
}

  };

  importer.setUser(((AppSession)
 Session.get()).getContext().getUser());
  importer.setDomain(((AppSession) Session.get()).getContext()
  .getDomain());

  importer.addImportListener(listener);


  new Thread(new Runnable() {

public void run() {

  try {

boolean flag = importer.importContacts(uploaded, null);

if (flag) {
  BulkImport.this.info
 (BulkImport.this.getString(imported));
  logger.debug(User  + context.getEmail()
  +  managed to import the contacts!);
} else {

  BulkImport.this.error(BulkImport.this.getString(enc_error));
  logger.error(User  + context.getEmail()
  +  did NOT manage to import the contacts!);
}
  } catch (Exception e) {
logger.error(User  + context.getEmail()
+  did NOT manage to import the contacts!, e);

  BulkImport.this.error(BulkImport.this.getString(not_imported));
  }

  importer.removeImportListener(listener);
  target.addComponent(feed);

}

  }).start();

} else {
  BulkImport.this.error(getString(no_uploaded_file));
}

  }
 And the exception:
 16-04-2010 14:44:20,175 ERROR
 com.company.project.ui.bulk.BulkImport$2$2.run:183 - User
 mase...@velti.com did NOT manage to import the contacts!
   org.apache.wicket.WicketRuntimeException: There is no application
 attached to current thread Thread-17
at org.apache.wicket.Application.get(Application.java:179)
at
 org.apache.wicket.Component.getApplication(Component.java:1323)
at org.apache.wicket.Component.getLocalizer(Component.java:1436)
at org.apache.wicket.Component.getString(Component.java:1903)
at org.apache.wicket.Component.getString(Component.java:1890)
at com. company.project.ui.bulk.BulkImport$2$1.info
 (BulkImport.java:153)
at com.
 company.project.phonebook.bulk.PhonebookImporter.fireImportInfo(PhonebookImporter.java:76)
at com.
 company.project.core.ManagerBean.saveContacts(ManagerBean.java:212)
at com.
 company.project.core.ManagerBean$$FastClassByCGLIB$$a2c3fbf0.invoke(generated)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191)
at
 org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:692)
at
 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at
 org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
at
 

Re: WicketRuntimeException: There is no application attached to current thread

2010-04-16 Thread Ernesto Reinaldo Barreiro
If you need an example on how to do this I can point you to a somewhat
similar example.

Ernesto

On Fri, Apr 16, 2010 at 3:15 PM, Ernesto Reinaldo Barreiro 
reier...@gmail.com wrote:

 Do not use make references to components on the thread. Instead create an
 instance of runnable to which you pass all the information you need and use
 a kind of context to communicate with the Web layer if you need to pass
 back information.

 Best,

 Ernesto


 2010/4/16 Martin Asenov mase...@velti.com

 Hello guys!

 In a page, I have a button. The button starts a thread, just like this,
 but I get the exception in the bottom. Here is some code:
  @Override
  protected void onSubmit(final AjaxRequestTarget target, Form? form)
 {
final FileUpload fileUpload = fileUploadField.getFileUpload();
if (fileUpload != null) {

  final PhonebookImporter importer = new
 PhonebookImporter(((AppSession) Session.get()).getManager());

  logger.debug(User  + context.getEmail()
  +  uploaded an import file -  +
 fileUpload.getClientFileName());

  byte[] bytes = fileUpload.getBytes();

  String uploadFolder;

  try {
uploadFolder = System.getenv(CATALINA_HOME)
+ props.get(uploadFolder);
  } catch (SMSOfficeException e1) {
logger.error(Could not resolve property!, e1);
uploadFolder =
 /home/project/services/apache-tomcat-6.0.20/webapps/ROOT/temp/;
  }

  User currentUser = ((AppSession) Session.get()).getContext()
  .getUser();

  final File uploaded = new File(uploadFolder
  + String.valueOf(currentUser.getId()) + / +
 fileUpload.getClientFileName());

  uploaded.getParentFile().mkdirs();

  try {
FileOutputStream fos = new FileOutputStream(uploaded, false);
fos.write(bytes);
fos.close();
logger.info(File written on  + uploaded.getAbsolutePath());
  } catch (IOException e) {
logger.error(I/O Exception occurred!, e);
return;
  }

  final ImportListener listener = new ImportListener() {

public void info(String object, ImportMessage type) {
  textModel.append(getString(type.toString()) + object + \n);
}

  };

  importer.setUser(((AppSession)
 Session.get()).getContext().getUser());
  importer.setDomain(((AppSession) Session.get()).getContext()
  .getDomain());

  importer.addImportListener(listener);


  new Thread(new Runnable() {

public void run() {

  try {

boolean flag = importer.importContacts(uploaded, null);

if (flag) {
  BulkImport.this.info
 (BulkImport.this.getString(imported));
  logger.debug(User  + context.getEmail()
  +  managed to import the contacts!);
} else {

  BulkImport.this.error(BulkImport.this.getString(enc_error));
  logger.error(User  + context.getEmail()
  +  did NOT manage to import the contacts!);
}
  } catch (Exception e) {
logger.error(User  + context.getEmail()
+  did NOT manage to import the contacts!, e);

  BulkImport.this.error(BulkImport.this.getString(not_imported));
  }

  importer.removeImportListener(listener);
  target.addComponent(feed);

}

  }).start();

} else {
  BulkImport.this.error(getString(no_uploaded_file));
}

  }
 And the exception:
 16-04-2010 14:44:20,175 ERROR
 com.company.project.ui.bulk.BulkImport$2$2.run:183 - User
 mase...@velti.com did NOT manage to import the contacts!
   org.apache.wicket.WicketRuntimeException: There is no application
 attached to current thread Thread-17
at org.apache.wicket.Application.get(Application.java:179)
at
 org.apache.wicket.Component.getApplication(Component.java:1323)
at
 org.apache.wicket.Component.getLocalizer(Component.java:1436)
at org.apache.wicket.Component.getString(Component.java:1903)
at org.apache.wicket.Component.getString(Component.java:1890)
at com. company.project.ui.bulk.BulkImport$2$1.info
 (BulkImport.java:153)
at com.
 company.project.phonebook.bulk.PhonebookImporter.fireImportInfo(PhonebookImporter.java:76)
at com.
 company.project.core.ManagerBean.saveContacts(ManagerBean.java:212)
at com.
 company.project.core.ManagerBean$$FastClassByCGLIB$$a2c3fbf0.invoke(generated)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191)
at
 org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:692)
at
 

RE: WicketRuntimeException: There is no application attached to current thread

2010-04-16 Thread Martin Asenov
I already saw one in javathoughts.com, but I don't see any major differences.

Best,
Martin


-Original Message-
From: Ernesto Reinaldo Barreiro [mailto:reier...@gmail.com] 
Sent: Friday, April 16, 2010 4:17 PM
To: users@wicket.apache.org
Subject: Re: WicketRuntimeException: There is no application attached to 
current thread

If you need an example on how to do this I can point you to a somewhat
similar example.

Ernesto

On Fri, Apr 16, 2010 at 3:15 PM, Ernesto Reinaldo Barreiro 
reier...@gmail.com wrote:

 Do not use make references to components on the thread. Instead create an
 instance of runnable to which you pass all the information you need and use
 a kind of context to communicate with the Web layer if you need to pass
 back information.

 Best,

 Ernesto


 2010/4/16 Martin Asenov mase...@velti.com

 Hello guys!

 In a page, I have a button. The button starts a thread, just like this,
 but I get the exception in the bottom. Here is some code:
  @Override
  protected void onSubmit(final AjaxRequestTarget target, Form? form)
 {
final FileUpload fileUpload = fileUploadField.getFileUpload();
if (fileUpload != null) {

  final PhonebookImporter importer = new
 PhonebookImporter(((AppSession) Session.get()).getManager());

  logger.debug(User  + context.getEmail()
  +  uploaded an import file -  +
 fileUpload.getClientFileName());

  byte[] bytes = fileUpload.getBytes();

  String uploadFolder;

  try {
uploadFolder = System.getenv(CATALINA_HOME)
+ props.get(uploadFolder);
  } catch (SMSOfficeException e1) {
logger.error(Could not resolve property!, e1);
uploadFolder =
 /home/project/services/apache-tomcat-6.0.20/webapps/ROOT/temp/;
  }

  User currentUser = ((AppSession) Session.get()).getContext()
  .getUser();

  final File uploaded = new File(uploadFolder
  + String.valueOf(currentUser.getId()) + / +
 fileUpload.getClientFileName());

  uploaded.getParentFile().mkdirs();

  try {
FileOutputStream fos = new FileOutputStream(uploaded, false);
fos.write(bytes);
fos.close();
logger.info(File written on  + uploaded.getAbsolutePath());
  } catch (IOException e) {
logger.error(I/O Exception occurred!, e);
return;
  }

  final ImportListener listener = new ImportListener() {

public void info(String object, ImportMessage type) {
  textModel.append(getString(type.toString()) + object + \n);
}

  };

  importer.setUser(((AppSession)
 Session.get()).getContext().getUser());
  importer.setDomain(((AppSession) Session.get()).getContext()
  .getDomain());

  importer.addImportListener(listener);


  new Thread(new Runnable() {

public void run() {

  try {

boolean flag = importer.importContacts(uploaded, null);

if (flag) {
  BulkImport.this.info
 (BulkImport.this.getString(imported));
  logger.debug(User  + context.getEmail()
  +  managed to import the contacts!);
} else {

  BulkImport.this.error(BulkImport.this.getString(enc_error));
  logger.error(User  + context.getEmail()
  +  did NOT manage to import the contacts!);
}
  } catch (Exception e) {
logger.error(User  + context.getEmail()
+  did NOT manage to import the contacts!, e);

  BulkImport.this.error(BulkImport.this.getString(not_imported));
  }

  importer.removeImportListener(listener);
  target.addComponent(feed);

}

  }).start();

} else {
  BulkImport.this.error(getString(no_uploaded_file));
}

  }
 And the exception:
 16-04-2010 14:44:20,175 ERROR
 com.company.project.ui.bulk.BulkImport$2$2.run:183 - User
 mase...@velti.com did NOT manage to import the contacts!
   org.apache.wicket.WicketRuntimeException: There is no application
 attached to current thread Thread-17
at org.apache.wicket.Application.get(Application.java:179)
at
 org.apache.wicket.Component.getApplication(Component.java:1323)
at
 org.apache.wicket.Component.getLocalizer(Component.java:1436)
at org.apache.wicket.Component.getString(Component.java:1903)
at org.apache.wicket.Component.getString(Component.java:1890)
at com. company.project.ui.bulk.BulkImport$2$1.info
 (BulkImport.java:153)
at com.
 company.project.phonebook.bulk.PhonebookImporter.fireImportInfo(PhonebookImporter.java:76)
at com.
 company.project.core.ManagerBean.saveContacts(ManagerBean.java:212)
at com.
 

RE: WicketRuntimeException: There is no application attached to current thread

2010-04-16 Thread Martin Asenov
Should I pass the application's instance to the thread, which I can split in a 
separate class?

Best,
Martin


-Original Message-
From: ce...@jweekend.com [mailto:ce...@jweekend.com] On Behalf Of Cemal 
Bayramoglu
Sent: Friday, April 16, 2010 4:09 PM
To: users
Subject: Re: WicketRuntimeException: There is no application attached to 
current thread

Component's getString method will try to get the laocalizer from the
Application, and the Application instance (singleton for a Wicket
web-app) is bound to the thread processing your request, not to the
one you have spawned off of it

Regards - Cemal
jWeekend
OO  Java Technologies, Wicket
Consulting, Development, Training
http://jWeekend.com
.

2010/4/16 Martin Asenov mase...@velti.com:
 Hello guys!
 In a page, I have a button. The button starts a thread, just like this, but I 
 get the exception in the bottom. Here is some code:
     �...@override
      protected void onSubmit(final AjaxRequestTarget target, Form? form) {
        final FileUpload fileUpload = fileUploadField.getFileUpload();
        if (fileUpload != null) {

          final PhonebookImporter importer = new 
 PhonebookImporter(((AppSession) Session.get()).getManager());

          logger.debug(User  + context.getEmail()
              +  uploaded an import file -  + 
 fileUpload.getClientFileName());

          byte[] bytes = fileUpload.getBytes();

          String uploadFolder;

          try {
            uploadFolder = System.getenv(CATALINA_HOME)
                + props.get(uploadFolder);
          } catch (SMSOfficeException e1) {
            logger.error(Could not resolve property!, e1);
            uploadFolder = 
 /home/project/services/apache-tomcat-6.0.20/webapps/ROOT/temp/;
          }

          User currentUser = ((AppSession) Session.get()).getContext()
              .getUser();

          final File uploaded = new File(uploadFolder
              + String.valueOf(currentUser.getId()) + / + 
 fileUpload.getClientFileName());

          uploaded.getParentFile().mkdirs();

          try {
            FileOutputStream fos = new FileOutputStream(uploaded, false);
            fos.write(bytes);
            fos.close();
            logger.info(File written on  + uploaded.getAbsolutePath());
          } catch (IOException e) {
            logger.error(I/O Exception occurred!, e);
            return;
          }

          final ImportListener listener = new ImportListener() {

            public void info(String object, ImportMessage type) {
              textModel.append(getString(type.toString()) + object + \n);
            }

          };

          importer.setUser(((AppSession) 
 Session.get()).getContext().getUser());
          importer.setDomain(((AppSession) Session.get()).getContext()
              .getDomain());

          importer.addImportListener(listener);


          new Thread(new Runnable() {

            public void run() {

              try {

                boolean flag = importer.importContacts(uploaded, null);

                if (flag) {
                  BulkImport.this.info(BulkImport.this.getString(imported));
                  logger.debug(User  + context.getEmail()
                      +  managed to import the contacts!);
                } else {
                  
 BulkImport.this.error(BulkImport.this.getString(enc_error));
                  logger.error(User  + context.getEmail()
                      +  did NOT manage to import the contacts!);
                }
              } catch (Exception e) {
                logger.error(User  + context.getEmail()
                    +  did NOT manage to import the contacts!, e);
                
 BulkImport.this.error(BulkImport.this.getString(not_imported));
              }

              importer.removeImportListener(listener);
              target.addComponent(feed);

            }

          }).start();

        } else {
          BulkImport.this.error(getString(no_uploaded_file));
        }

      }
 And the exception:
 16-04-2010 14:44:20,175 ERROR 
 com.company.project.ui.bulk.BulkImport$2$2.run:183 - User mase...@velti.com 
 did NOT manage to import the contacts!
   org.apache.wicket.WicketRuntimeException: There is no application attached 
 to current thread Thread-17
            at org.apache.wicket.Application.get(Application.java:179)
            at org.apache.wicket.Component.getApplication(Component.java:1323)
            at org.apache.wicket.Component.getLocalizer(Component.java:1436)
            at org.apache.wicket.Component.getString(Component.java:1903)
            at org.apache.wicket.Component.getString(Component.java:1890)
            at com. 
 company.project.ui.bulk.BulkImport$2$1.info(BulkImport.java:153)
            at com. 
 company.project.phonebook.bulk.PhonebookImporter.fireImportInfo(PhonebookImporter.java:76)
            at com. 
 company.project.core.ManagerBean.saveContacts(ManagerBean.java:212)
            at com. 
 

Re: WicketRuntimeException: There is no application attached to current thread

2010-04-16 Thread Ernesto Reinaldo Barreiro
Why not path the information you need to a runnable? and create a class you
use as context to communicate WEB and thread layer... IMHO that will be a
cleaner solution.

Ernesto

2010/4/16 Martin Asenov mase...@velti.com

 Should I pass the application's instance to the thread, which I can split
 in a separate class?

 Best,
 Martin


 -Original Message-
 From: ce...@jweekend.com [mailto:ce...@jweekend.com] On Behalf Of Cemal
 Bayramoglu
 Sent: Friday, April 16, 2010 4:09 PM
 To: users
 Subject: Re: WicketRuntimeException: There is no application attached to
 current thread

 Component's getString method will try to get the laocalizer from the
 Application, and the Application instance (singleton for a Wicket
 web-app) is bound to the thread processing your request, not to the
 one you have spawned off of it

 Regards - Cemal
 jWeekend
 OO  Java Technologies, Wicket
 Consulting, Development, Training
 http://jWeekend.com
 .

 2010/4/16 Martin Asenov mase...@velti.com:
  Hello guys!
  In a page, I have a button. The button starts a thread, just like this,
 but I get the exception in the bottom. Here is some code:
   @Override
   protected void onSubmit(final AjaxRequestTarget target, Form?
 form) {
 final FileUpload fileUpload = fileUploadField.getFileUpload();
 if (fileUpload != null) {
 
   final PhonebookImporter importer = new
 PhonebookImporter(((AppSession) Session.get()).getManager());
 
   logger.debug(User  + context.getEmail()
   +  uploaded an import file -  +
 fileUpload.getClientFileName());
 
   byte[] bytes = fileUpload.getBytes();
 
   String uploadFolder;
 
   try {
 uploadFolder = System.getenv(CATALINA_HOME)
 + props.get(uploadFolder);
   } catch (SMSOfficeException e1) {
 logger.error(Could not resolve property!, e1);
 uploadFolder =
 /home/project/services/apache-tomcat-6.0.20/webapps/ROOT/temp/;
   }
 
   User currentUser = ((AppSession) Session.get()).getContext()
   .getUser();
 
   final File uploaded = new File(uploadFolder
   + String.valueOf(currentUser.getId()) + / +
 fileUpload.getClientFileName());
 
   uploaded.getParentFile().mkdirs();
 
   try {
 FileOutputStream fos = new FileOutputStream(uploaded, false);
 fos.write(bytes);
 fos.close();
 logger.info(File written on  + uploaded.getAbsolutePath());
   } catch (IOException e) {
 logger.error(I/O Exception occurred!, e);
 return;
   }
 
   final ImportListener listener = new ImportListener() {
 
 public void info(String object, ImportMessage type) {
   textModel.append(getString(type.toString()) + object +
 \n);
 }
 
   };
 
   importer.setUser(((AppSession)
 Session.get()).getContext().getUser());
   importer.setDomain(((AppSession) Session.get()).getContext()
   .getDomain());
 
   importer.addImportListener(listener);
 
 
   new Thread(new Runnable() {
 
 public void run() {
 
   try {
 
 boolean flag = importer.importContacts(uploaded, null);
 
 if (flag) {
   BulkImport.this.info
 (BulkImport.this.getString(imported));
   logger.debug(User  + context.getEmail()
   +  managed to import the contacts!);
 } else {
 
  BulkImport.this.error(BulkImport.this.getString(enc_error));
   logger.error(User  + context.getEmail()
   +  did NOT manage to import the contacts!);
 }
   } catch (Exception e) {
 logger.error(User  + context.getEmail()
 +  did NOT manage to import the contacts!, e);
 
  BulkImport.this.error(BulkImport.this.getString(not_imported));
   }
 
   importer.removeImportListener(listener);
   target.addComponent(feed);
 
 }
 
   }).start();
 
 } else {
   BulkImport.this.error(getString(no_uploaded_file));
 }
 
   }
  And the exception:
  16-04-2010 14:44:20,175 ERROR
 com.company.project.ui.bulk.BulkImport$2$2.run:183 - User
 mase...@velti.com did NOT manage to import the contacts!
org.apache.wicket.WicketRuntimeException: There is no application
 attached to current thread Thread-17
 at org.apache.wicket.Application.get(Application.java:179)
 at
 org.apache.wicket.Component.getApplication(Component.java:1323)
 at
 org.apache.wicket.Component.getLocalizer(Component.java:1436)
 at org.apache.wicket.Component.getString(Component.java:1903)
 at org.apache.wicket.Component.getString(Component.java:1890)
 at com. company.project.ui.bulk.BulkImport$2$1.info
 

New blog post Components v.s. Pages

2010-04-16 Thread Erwin Bolwidt

Hi,

I created a blog posted titled  Wicket best practices: Components v.s. 
Pages


http://blog.worldturner.com/worldturner/entry/wicket_best_practices_components_v

We've been using wicket at my current location for quite a few projects 
now and I'm writing a few blog entries on the things that we've found 
most convenient.


Regards,
  Erwin Bolwidt




Repeating form on a page

2010-04-16 Thread David Hamilton
I am new to Wicket (and have had great help from this community so far -
thank you). My question here is that I'm trying to setup a simple
contact form where a person may have zero or more contacts. My solution
is to make the contact info a form within a panel. However, I need to
repeat the panel form on the page for each contact (represented by a
POJO I can bind to the form elements).  I will provide and add button
at the bottom of the list to allow them to re-submit the page and add a
new empty object bound to a new form element. 

 

  So my question is really two questions.

 

1)  Is this best approach for this situation?

2)  If it is, how do I bind each POJO on the list to a unique form
instance? 

 

The goal is to allow each contact to be individually edited  and saved. 

 

Any help is greatly appreciated.

 

Thanks, 

 

David Hamilton

Web Coordinator 

(615) 843-3337

Hermitage Lighting Gallery

www.hermitagelighting.com

 



Keep it Green! To help protect the environment, please
only print this email if necessary. 
Printing email can cost more than you think. 
Learn more on our website: http://www.hermitagelighting.com/printing_email.php

The information transmitted in this email is 
intended solely for the individual or entity 
to which it is addressed and may contain 
confidential and/or privileged material. 
Any review, retransmission, dissemination or
other use of or taking action in reliance 
upon this information by persons or entities 
other than the intended recipient is prohibited. 
If you have received this email in error please 
immediately notify us by reply email to the sender. 
You must destroy the original material and its contents from any computer. 
 



Re: AjaxSubmitLink javadocs

2010-04-16 Thread Jeremy Thomerson
Every little bit helps - look how long it's been and nobody noticed it and
brought it to our attention - but it could have thrown some people off.
 Thanks for the help!

I'll commit a fix this weekend when I get a few free minutes.  :)

--
Jeremy Thomerson
http://www.wickettraining.com



On Fri, Apr 16, 2010 at 3:03 AM, Xavier López xavil...@gmail.com wrote:

 Thanks for the answer, Jeremy.

 I just created issue https://issues.apache.org/jira/browse/WICKET-2837.

 I'm with you on what you state, it was obvious the only possible way to do
 a
 submit without JS is to have an html submit mechanism, anyway, I was just
 being cautious in case I was missing something.
 I'm just glad to contribute improving this great framework, even though
 it's
 on a lesser thing like this.

 Cheers,
 Xavier


 2010/4/16 Jeremy Thomerson jer...@wickettraining.com

  This appears to be an issue in the documentation of the AjaxSubmitLink.
  I
  just checked and the documentation is still the same in 1.4.  I will try
 to
  verify this and fix it tomorrow.  In the meantime, it would be helpful if
  you opened a JIRA issue to keep track of this (post the link back to this
  thread).
 
  Anyway, the documentation is written as if this were a fallback component
  (i.e. AjaxFallbackLink).  However, it is not.  Obviously, if you do not
  have
  JS enabled, you can not submit a form with a link in the browser.  You
  could
  only submit it with a submit button.
 
  --
  Jeremy Thomerson
  http://www.wickettraining.com
 
 
 
  On Thu, Apr 15, 2010 at 4:12 AM, Xavier López xavil...@gmail.com
 wrote:
 
   Hi,
  
   I'm a liitle confused about AjaxSubmitLink's JavaDoc, and the code
 inside
   it... I'm using Wicket 1.3.6:
  
   If/when javascript is turned off in the browser, or it doesn't support
javascript, then the
browser will not respond to the onclick event, using the href
 directly.
Wicket will then use a
normal request target, and call the serverside onClick with a null
  {...@link
AjaxRequestTarget}.
   
  
   First question is, does it really mean 'serverside onClick' ? Or should
  it
   read 'serverside onSubmit' ?
  
   And then, in the code, I see :
  
   protected void onComponentTag(ComponentTag tag)
{
super.onComponentTag(tag);
   
if (isLinkEnabled())
{
if (tag.getName().toLowerCase().equals(a))
{
tag.put(href, #);
}
}
else
{
disableLink(tag);
}
}
   
  
   So it seems this component never gets to have anything else than # in
 its
   href, so it won't do anything when js is not enabled...
  
   Is this an error in the documentation ?
  
   Thanks,
   Xavier
  
 



 --
 Klein bottle for rent--inquire within.



Re: Repeating form on a page

2010-04-16 Thread James Carman
The forms are all based on models.  So, just make sure you use a
different model for each form.  I'd look into ListView, perhaps.

On Fri, Apr 16, 2010 at 9:48 AM, David Hamilton
dhamil...@hermitagelighting.com wrote:
 I am new to Wicket (and have had great help from this community so far -
 thank you). My question here is that I'm trying to setup a simple
 contact form where a person may have zero or more contacts. My solution
 is to make the contact info a form within a panel. However, I need to
 repeat the panel form on the page for each contact (represented by a
 POJO I can bind to the form elements).  I will provide and add button
 at the bottom of the list to allow them to re-submit the page and add a
 new empty object bound to a new form element.



  So my question is really two questions.



 1)      Is this best approach for this situation?

 2)      If it is, how do I bind each POJO on the list to a unique form
 instance?



 The goal is to allow each contact to be individually edited  and saved.



 Any help is greatly appreciated.



 Thanks,



 David Hamilton

 Web Coordinator

 (615) 843-3337

 Hermitage Lighting Gallery

 www.hermitagelighting.com




 
 Keep it Green! To help protect the environment, please
 only print this email if necessary.
 Printing email can cost more than you think.
 Learn more on our website: http://www.hermitagelighting.com/printing_email.php

 The information transmitted in this email is
 intended solely for the individual or entity
 to which it is addressed and may contain
 confidential and/or privileged material.
 Any review, retransmission, dissemination or
 other use of or taking action in reliance
 upon this information by persons or entities
 other than the intended recipient is prohibited.
 If you have received this email in error please
 immediately notify us by reply email to the sender.
 You must destroy the original material and its contents from any computer.
 



-
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org



Re: resources folder / package

2010-04-16 Thread Eyal Golan
thanks Cemal and Apple.
i think i got it.
Will test it on Sunday.


Eyal Golan
egola...@gmail.com

Visit: http://jvdrums.sourceforge.net/
LinkedIn: http://www.linkedin.com/in/egolan74

P  Save a tree. Please don't print this e-mail unless it's really necessary


On Fri, Apr 16, 2010 at 5:13 AM, Apple Grew appleg...@gmail.com wrote:

 @Eyal

 Maybe you would like to have a look at this thread.

 http://n4.nabble.com/resource-css-loading-td1878209.html

 Regards,
 Apple Grew
 my blog @ http://blog.applegrew.com/


 On Fri, Apr 16, 2010 at 2:41 AM, Eyal Golan egola...@gmail.com wrote:

  hi,
  thanks.
  I know this, but my question was different.
  I saw in some projects that the JS and CSS files are in the same
 hierarchy
  as the class that is used for their scope, but the main folder is
  different.
 
  Example:
  I have a Java class: com.myCompany.ResourceScope.java
  it is located under src.
  I have a file called MyCss.css, which is located under com.myCompany
  but it is located under resources folder.
  both src and resources are under the same project.
 
  in the projects I saw, you can call for this resource reference with the
  ResourceScope class.
 
  I tried to do the same without success.
 
  Any thoughts?
 
 
  Eyal Golan
  egola...@gmail.com
 
  Visit: http://jvdrums.sourceforge.net/
  LinkedIn: http://www.linkedin.com/in/egolan74
 
  P  Save a tree. Please don't print this e-mail unless it's really
 necessary
 
 
  On Thu, Apr 15, 2010 at 4:46 PM, Sigmar Muuga meedi...@gmail.com
 wrote:
 
   You can define packages and put all CSS / JS files into them. Note that
   there must be some class also along with them, it may be an empty
 class.
  
   Then you can reference these resources using that class declaration.
  
   Note that if your css uses images, then you have to put correct paths
  into
   that css.
  
   Sigmar
  
   On Thu, Apr 15, 2010 at 2:43 PM, Eyal Golan egola...@gmail.com
 wrote:
  
Hello to you all,
it's been a very long time since I wrote here.
I have a question regarding folder locations.
I am working with WiQuery and it is unbelievable great.
Also the support there (thanks indiana ;) )
   
In WiQuery there are 'themes' and the location of the CSS and images
 is
   in
a
separate folder called 'resources' , which has the same structure as
 of
   the
Java classes themselves.
I wanted to do the same in my project without success.
   
Should I configure something other than just put the same hierarchy?
   
thanks for the help.
   
My question is
Eyal Golan
egola...@gmail.com
   
Visit: http://jvdrums.sourceforge.net/
LinkedIn: http://www.linkedin.com/in/egolan74
   
P  Save a tree. Please don't print this e-mail unless it's really
   necessary
   
  
 



Re: Repeating form on a page

2010-04-16 Thread Xavier López
Hi,

I've been through a similar issue recently, also with a 'remove' button to
delete elements from the list. I ended up using RefreshingView (that's the
one I'd reccomend), and it worked nicely.

However I'll expose the various solutions I've gone through, hoping to
provide some background on the subject. I'd also be grateful on observations
and comments on these, because I'm sure I'm missing something and there are
still some aspects of these repeaters that I don't understand, so probably
part of these thoughts are wrong :)

In the first place, I used a ListView repeater. When clicking the 'add new'
button, however, I found that all unsaved input entered on the other list
elements was lost. That's because ListView refreshes the entire List with
the backing Model objects in it's ModelList, and models were not being
updated, as forms were not being submitted. So, I had to make the 'add new'
link a submit button (skipping default form processing in order to avoid
validation errors on incomplete data). However, to my surprise, same thing
keeped happening (same for the delete button). Later on, I found about
'ListView#setReuseItems(boolean)', which solved the problem. But to my
despair, the delete button always deleted the last element from the List. I
still do not understand why, and still don't know what is 'reuseItems'
really doing. (Any hints on that one?)

Then, I was advised to use RefreshingView, and things were moreover the
same, only that instead of having a ModelList given to the repeater, an
IteratorModel had to be provided in an overriden method. In this case, a
ModelsEqual ReuseItemStrategy had to be provided in order to keep the
unsaved inputs in the forms when adding/removing.


As a last appreciation, I have to say I hoped there was a specific component
addressing this behavior, being it a fairly common arrangement... If one day
I fully understand this I'd be happy to implement one myself, even if only
for the sake of clarity in my code ;)

Thanks,
Xavier

2010/4/16 David Hamilton dhamil...@hermitagelighting.com

 I am new to Wicket (and have had great help from this community so far -
 thank you). My question here is that I'm trying to setup a simple
 contact form where a person may have zero or more contacts. My solution
 is to make the contact info a form within a panel. However, I need to
 repeat the panel form on the page for each contact (represented by a
 POJO I can bind to the form elements).  I will provide and add button
 at the bottom of the list to allow them to re-submit the page and add a
 new empty object bound to a new form element.



  So my question is really two questions.



 1)  Is this best approach for this situation?

 2)  If it is, how do I bind each POJO on the list to a unique form
 instance?



 The goal is to allow each contact to be individually edited  and saved.



 Any help is greatly appreciated.



 Thanks,



 David Hamilton

 Web Coordinator

 (615) 843-3337

 Hermitage Lighting Gallery

 www.hermitagelighting.com




 
 Keep it Green! To help protect the environment, please
 only print this email if necessary.
 Printing email can cost more than you think.
 Learn more on our website:
 http://www.hermitagelighting.com/printing_email.php

 The information transmitted in this email is
 intended solely for the individual or entity
 to which it is addressed and may contain
 confidential and/or privileged material.
 Any review, retransmission, dissemination or
 other use of or taking action in reliance
 upon this information by persons or entities
 other than the intended recipient is prohibited.
 If you have received this email in error please
 immediately notify us by reply email to the sender.
 You must destroy the original material and its contents from any computer.
 




-- 
Klein bottle for rent--inquire within.


Re: Bug in Page refresh?

2010-04-16 Thread Xavier López
Hi Wolfgang,

If I had to refresh the entire page on language change, I would not do it
with an Ajax Request, but with a normal one instead. I do not know how will
setResponsePage behave in a serverside Ajax callback. However, if you need
to do it with ajax, you should add the language dependent components to the
AjaxRequestTarget...

Hope that helped.

Cheers,
Xavier

2010/4/16 Wolfgang Grossinger wolfgang.grossin...@teamead.com

 We have a DropDownChoice to change the language of a page (the language in
 mapped through an enum). The handler to change the code is as follows.

@Override
protected void onSubmit(AjaxRequestTarget target) {

  getSession().setLocale(getLanguage().getObject().getLocale());
setResponsePage(getPage());
}

 We just have 3 pages and a login page. The code works on 2 of 3 pages but I
 don't know why it doesn't work on the third page (the code to find the
 language and to get the current page seems also to be correct and working).
 My question is does anybody have some hints what I could do wrong?

 Regards,

 Wolfgang



 -
 To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
 For additional commands, e-mail: users-h...@wicket.apache.org




YuiMenuBarItem getMenuClass menu2

2010-04-16 Thread Steve Lowery
I'm trying to create a YuiMenuBar for my application using the ones in the
menu2 packages.  It works great, but I want to style one of the
YuiMenuBarItems differently.  I see there is an overridable getMenuClass()
method, but there are 2 issues:

1.  The only way to contruct a YuiMenuBarItem is through
YuiMenuBar.addMenu(), so even if I create a subclass, it does me no good.
2.  The getMenuClass() is returning yuimenuitem, but the markup already
has the class attribute set to yuimenubaritem and it is not being
overwritten by the one in the component.

Am I using these components right, or does YuiMenuItem need a setMenuClass()
on it?

I am using version 1.4.1.


Re: Detect bookmark access to nonbookmarkablepages

2010-04-16 Thread Igor Vaynberg
use a decorator, wrap the default factory, catch the exception,
transform it into something else.

although, if your users are bookmarking a non-bookmarkable url you
should get a page expired error. page factory is only used for
creating bookmarkable pages.

-igor

On Fri, Apr 16, 2010 at 1:37 AM, Xavier López xavil...@gmail.com wrote:
 Hi there,

 I'm trying to find an elegant way to detect the cases where a user tries to
 access a nonbookmarkablepage with a bookmark. From the stack trace produced
 in this case, I see this situation is handled in
 DefaultPageFactory#newPage(Class pageClass), like this:

            
            catch (NoSuchMethodException e)
        {
            // a bit of a hack here..
            Constructor constructor = constructor(pageClass,
 PageParameters.class);
            if (constructor != null)
            {
                return newPage(constructor, new PageParameters());
            }
            else
            {
                throw new WicketRuntimeException(Unable to create page from
  + pageClass +
                        . Class does not have a default contructor, e);
            }
        }


 I would like to present a custom page explaining the circumstances with a
 nice link to the starting place where to navigate from.
 I don't really like treating this situation as a WicketRuntimeException and
 have it bubbling up to an internalerrorpage, because of the little
 information on the exception thrown (i don't like identifying it by its
 text, or nested exception type).

 Unfortunately, DefaultPageFactory#newPage(Class pageClass) is final, so this
 behavior can not be overriden. Is providing a custom implementation of
 IPageFactory the best approach to this issue ? Any other way around ?

 Cheers,
 Xavier


-
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org



Re: Repeating form on a page

2010-04-16 Thread Igor Vaynberg
this may give you some ideas

http://wicketinaction.com/2008/10/building-a-listeditor-form-component/

-igor

On Fri, Apr 16, 2010 at 6:48 AM, David Hamilton
dhamil...@hermitagelighting.com wrote:
 I am new to Wicket (and have had great help from this community so far -
 thank you). My question here is that I'm trying to setup a simple
 contact form where a person may have zero or more contacts. My solution
 is to make the contact info a form within a panel. However, I need to
 repeat the panel form on the page for each contact (represented by a
 POJO I can bind to the form elements).  I will provide and add button
 at the bottom of the list to allow them to re-submit the page and add a
 new empty object bound to a new form element.



  So my question is really two questions.



 1)      Is this best approach for this situation?

 2)      If it is, how do I bind each POJO on the list to a unique form
 instance?



 The goal is to allow each contact to be individually edited  and saved.



 Any help is greatly appreciated.



 Thanks,



 David Hamilton

 Web Coordinator

 (615) 843-3337

 Hermitage Lighting Gallery

 www.hermitagelighting.com




 
 Keep it Green! To help protect the environment, please
 only print this email if necessary.
 Printing email can cost more than you think.
 Learn more on our website: http://www.hermitagelighting.com/printing_email.php

 The information transmitted in this email is
 intended solely for the individual or entity
 to which it is addressed and may contain
 confidential and/or privileged material.
 Any review, retransmission, dissemination or
 other use of or taking action in reliance
 upon this information by persons or entities
 other than the intended recipient is prohibited.
 If you have received this email in error please
 immediately notify us by reply email to the sender.
 You must destroy the original material and its contents from any computer.
 



-
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org



Interstitial window prompt then open a new window

2010-04-16 Thread Doug Leeper
We are needing an interstitial window that prompts a user if they want to 
continue to another site.  Additionally, we would like to provide a checkbox if 
they would  not longer like to see this prompt again.
I can prompt via a ModalWindow and capture their response...but what I am not 
sure what to do now is open a window with the destination URL via Ajax.

I like the target=_blank behavior on an href...but this can't apply since I 
am opening a modal window with that link.  Do I have to create custom 
javascript to append to the Ajax request to open a new window with that url?

Are there other options?

Thanks in advance!
- Doug


Re: Detect bookmark access to nonbookmarkablepages

2010-04-16 Thread Xavier López
Thanks for the feedback, Igor, nice idea.

About the page factory exception, in fact I have nonbookmarkablepages
mounted as if they were, just to makeup the url's, like this:

mount(new HybridUrlCodingStrategy(/pageA, PageA.class));

So that when the user enters PageA (no default constructor - non
bookmarkable), he gets on the browser's location bar:
http://myapplication/pageA[.x]

Maybe it's a little weird, but it's working for me :)

Cheers,
Xavier

2010/4/16 Igor Vaynberg igor.vaynb...@gmail.com

 use a decorator, wrap the default factory, catch the exception,
 transform it into something else.

 although, if your users are bookmarking a non-bookmarkable url you
 should get a page expired error. page factory is only used for
 creating bookmarkable pages.

 -igor

 On Fri, Apr 16, 2010 at 1:37 AM, Xavier López xavil...@gmail.com wrote:
  Hi there,
 
  I'm trying to find an elegant way to detect the cases where a user tries
 to
  access a nonbookmarkablepage with a bookmark. From the stack trace
 produced
  in this case, I see this situation is handled in
  DefaultPageFactory#newPage(Class pageClass), like this:
 
 
 catch (NoSuchMethodException e)
 {
 // a bit of a hack here..
 Constructor constructor = constructor(pageClass,
  PageParameters.class);
 if (constructor != null)
 {
 return newPage(constructor, new PageParameters());
 }
 else
 {
 throw new WicketRuntimeException(Unable to create page
 from
   + pageClass +
 . Class does not have a default contructor, e);
 }
 }
 
 
  I would like to present a custom page explaining the circumstances with a
  nice link to the starting place where to navigate from.
  I don't really like treating this situation as a WicketRuntimeException
 and
  have it bubbling up to an internalerrorpage, because of the little
  information on the exception thrown (i don't like identifying it by its
  text, or nested exception type).
 
  Unfortunately, DefaultPageFactory#newPage(Class pageClass) is final, so
 this
  behavior can not be overriden. Is providing a custom implementation of
  IPageFactory the best approach to this issue ? Any other way around ?
 
  Cheers,
  Xavier
 

 -
 To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
 For additional commands, e-mail: users-h...@wicket.apache.org




-- 
Klein bottle for rent--inquire within.


Re: New blog post Components v.s. Pages

2010-04-16 Thread Iain Reddick
Thanks - I think insights from more experienced wicket developers are very 
welcome at the moment.

I agree very much with what you say in the post that it's hard to find 
information about the best shape for a wicket application to meet your needs. 
Also the comment re component swapping - I certainly wasn't aware of this for 
quite some time, and it does shed a completely different light on how the 
framework can be used.

- Original Message -
From: Erwin Bolwidt ebolw...@worldturner.nl
To: users@wicket.apache.org
Sent: Friday, 16 April, 2010 2:35:50 PM
Subject: New blog post Components v.s. Pages

Hi,

I created a blog posted titled  Wicket best practices: Components v.s. 
Pages

http://blog.worldturner.com/worldturner/entry/wicket_best_practices_components_v

We've been using wicket at my current location for quite a few projects 
now and I'm writing a few blog entries on the things that we've found 
most convenient.

Regards,
   Erwin Bolwidt



-
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org



RE: Interstitial window prompt then open a new window

2010-04-16 Thread Jeffrey Schneller
You may want to look into this.  I am using this to send a user to page
off our site via a link.

Link myLink = new Link(myLink) {
@Override
public void onClick() {
String url = http://your_url;;
throw new
RestartResponseAtInterceptPageException(new RedirectPage(url)); 
}

};
PopupSettings settings = new PopupSettings();
settings.setTarget(_new);
settings.setWindowName(My Other Site);
myLink.setPopupSettings(settings);
add(myLink);


It does not have the interstitial window prompt but this may get your
closer to what you want.



-Original Message-
From: Doug Leeper [mailto:douglee...@yahoo.com] 
Sent: Friday, April 16, 2010 11:51 AM
To: users@wicket.apache.org
Subject: Interstitial window prompt then open a new window

We are needing an interstitial window that prompts a user if they want
to continue to another site.  Additionally, we would like to provide a
checkbox if they would  not longer like to see this prompt again.
I can prompt via a ModalWindow and capture their response...but what I
am not sure what to do now is open a window with the destination URL via
Ajax.

I like the target=_blank behavior on an href...but this can't apply
since I am opening a modal window with that link.  Do I have to create
custom javascript to append to the Ajax request to open a new window
with that url?

Are there other options?

Thanks in advance!
- Doug

-
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org



Changing style in the same session with setStyle

2010-04-16 Thread Arie Fishler
Hi,

I am using setStyle in the Session to set a skin. I am using this setting
to retrieve texts from resource files based on the skin.

The thing is that a user might go to other pages during the same session.
Other pages might have different skins so they are supposed to show other
texts for the same keys.

What actually happens is that altough other pages reset the setStyle to
other values - the texts that are retrieved from the resource files are the
ones associated with the FIRST style set in the session.

This is really bad as I have all texts mixed up.

What is causing this? Is it the resource file lookup that is set once for a
session? Something else? Anyway around this?

Thanks,
Arie


RE: Repeating form on a page

2010-04-16 Thread David Hamilton
Thanks for the great response! I will look at RefreshingView, but right now I'm 
considering yet another possibility. 
I'm think of using a display-only ListView for existing items with an edit 
button to populate a modal dialog. I have yet to get to the Modal dialog part 
so I'll have to report back on how well that works :).

Thanks,

David 

-Original Message-
From: Xavier López [mailto:xavil...@gmail.com] 
Sent: Friday, April 16, 2010 9:33 AM
To: users@wicket.apache.org
Subject: Re: Repeating form on a page

Hi,

I've been through a similar issue recently, also with a 'remove' button to
delete elements from the list. I ended up using RefreshingView (that's the
one I'd reccomend), and it worked nicely.

However I'll expose the various solutions I've gone through, hoping to
provide some background on the subject. I'd also be grateful on observations
and comments on these, because I'm sure I'm missing something and there are
still some aspects of these repeaters that I don't understand, so probably
part of these thoughts are wrong :)

In the first place, I used a ListView repeater. When clicking the 'add new'
button, however, I found that all unsaved input entered on the other list
elements was lost. That's because ListView refreshes the entire List with
the backing Model objects in it's ModelList, and models were not being
updated, as forms were not being submitted. So, I had to make the 'add new'
link a submit button (skipping default form processing in order to avoid
validation errors on incomplete data). However, to my surprise, same thing
keeped happening (same for the delete button). Later on, I found about
'ListView#setReuseItems(boolean)', which solved the problem. But to my
despair, the delete button always deleted the last element from the List. I
still do not understand why, and still don't know what is 'reuseItems'
really doing. (Any hints on that one?)

Then, I was advised to use RefreshingView, and things were moreover the
same, only that instead of having a ModelList given to the repeater, an
IteratorModel had to be provided in an overriden method. In this case, a
ModelsEqual ReuseItemStrategy had to be provided in order to keep the
unsaved inputs in the forms when adding/removing.


As a last appreciation, I have to say I hoped there was a specific component
addressing this behavior, being it a fairly common arrangement... If one day
I fully understand this I'd be happy to implement one myself, even if only
for the sake of clarity in my code ;)

Thanks,
Xavier

2010/4/16 David Hamilton dhamil...@hermitagelighting.com

 I am new to Wicket (and have had great help from this community so far -
 thank you). My question here is that I'm trying to setup a simple
 contact form where a person may have zero or more contacts. My solution
 is to make the contact info a form within a panel. However, I need to
 repeat the panel form on the page for each contact (represented by a
 POJO I can bind to the form elements).  I will provide and add button
 at the bottom of the list to allow them to re-submit the page and add a
 new empty object bound to a new form element.



  So my question is really two questions.



 1)  Is this best approach for this situation?

 2)  If it is, how do I bind each POJO on the list to a unique form
 instance?



 The goal is to allow each contact to be individually edited  and saved.



 Any help is greatly appreciated.



 Thanks,



 David Hamilton

 Web Coordinator

 (615) 843-3337

 Hermitage Lighting Gallery

 www.hermitagelighting.com




 
 Keep it Green! To help protect the environment, please
 only print this email if necessary.
 Printing email can cost more than you think.
 Learn more on our website:
 http://www.hermitagelighting.com/printing_email.php

 The information transmitted in this email is
 intended solely for the individual or entity
 to which it is addressed and may contain
 confidential and/or privileged material.
 Any review, retransmission, dissemination or
 other use of or taking action in reliance
 upon this information by persons or entities
 other than the intended recipient is prohibited.
 If you have received this email in error please
 immediately notify us by reply email to the sender.
 You must destroy the original material and its contents from any computer.
 




-- 
Klein bottle for rent--inquire within.


Keep it Green! To help protect the environment, please
only print this email if necessary. 
Printing email can cost more than you think. 
Learn more on our website: http://www.hermitagelighting.com/printing_email.php

The information transmitted in this email is 
intended solely for the individual or entity 
to which it is addressed and may contain 
confidential and/or privileged material. 
Any review, retransmission, dissemination or
other use of or taking action in reliance 
upon this 

Re: Repeating form on a page

2010-04-16 Thread Ben Tilford
Would a FormComponentPanel work?
http://wicket.apache.org/docs/1.4/org/apache/wicket/markup/html/form/FormComponentPanel.html

On Fri, Apr 16, 2010 at 4:48 PM, David Hamilton 
dhamil...@hermitagelighting.com wrote:

 Thanks for the great response! I will look at RefreshingView, but right now
 I'm considering yet another possibility.
 I'm think of using a display-only ListView for existing items with an edit
 button to populate a modal dialog. I have yet to get to the Modal dialog
 part so I'll have to report back on how well that works :).

 Thanks,

 David

 -Original Message-
 From: Xavier López [mailto:xavil...@gmail.com]
 Sent: Friday, April 16, 2010 9:33 AM
 To: users@wicket.apache.org
 Subject: Re: Repeating form on a page

 Hi,

 I've been through a similar issue recently, also with a 'remove' button to
 delete elements from the list. I ended up using RefreshingView (that's the
 one I'd reccomend), and it worked nicely.

 However I'll expose the various solutions I've gone through, hoping to
 provide some background on the subject. I'd also be grateful on
 observations
 and comments on these, because I'm sure I'm missing something and there are
 still some aspects of these repeaters that I don't understand, so probably
 part of these thoughts are wrong :)

 In the first place, I used a ListView repeater. When clicking the 'add new'
 button, however, I found that all unsaved input entered on the other list
 elements was lost. That's because ListView refreshes the entire List with
 the backing Model objects in it's ModelList, and models were not being
 updated, as forms were not being submitted. So, I had to make the 'add new'
 link a submit button (skipping default form processing in order to avoid
 validation errors on incomplete data). However, to my surprise, same thing
 keeped happening (same for the delete button). Later on, I found about
 'ListView#setReuseItems(boolean)', which solved the problem. But to my
 despair, the delete button always deleted the last element from the List. I
 still do not understand why, and still don't know what is 'reuseItems'
 really doing. (Any hints on that one?)

 Then, I was advised to use RefreshingView, and things were moreover the
 same, only that instead of having a ModelList given to the repeater, an
 IteratorModel had to be provided in an overriden method. In this case, a
 ModelsEqual ReuseItemStrategy had to be provided in order to keep the
 unsaved inputs in the forms when adding/removing.


 As a last appreciation, I have to say I hoped there was a specific
 component
 addressing this behavior, being it a fairly common arrangement... If one
 day
 I fully understand this I'd be happy to implement one myself, even if only
 for the sake of clarity in my code ;)

 Thanks,
 Xavier

 2010/4/16 David Hamilton dhamil...@hermitagelighting.com

  I am new to Wicket (and have had great help from this community so far -
  thank you). My question here is that I'm trying to setup a simple
  contact form where a person may have zero or more contacts. My solution
  is to make the contact info a form within a panel. However, I need to
  repeat the panel form on the page for each contact (represented by a
  POJO I can bind to the form elements).  I will provide and add button
  at the bottom of the list to allow them to re-submit the page and add a
  new empty object bound to a new form element.
 
 
 
   So my question is really two questions.
 
 
 
  1)  Is this best approach for this situation?
 
  2)  If it is, how do I bind each POJO on the list to a unique form
  instance?
 
 
 
  The goal is to allow each contact to be individually edited  and saved.
 
 
 
  Any help is greatly appreciated.
 
 
 
  Thanks,
 
 
 
  David Hamilton
 
  Web Coordinator
 
  (615) 843-3337
 
  Hermitage Lighting Gallery
 
  www.hermitagelighting.com
 
 
 
 
  
  Keep it Green! To help protect the environment, please
  only print this email if necessary.
  Printing email can cost more than you think.
  Learn more on our website:
  http://www.hermitagelighting.com/printing_email.php
 
  The information transmitted in this email is
  intended solely for the individual or entity
  to which it is addressed and may contain
  confidential and/or privileged material.
  Any review, retransmission, dissemination or
  other use of or taking action in reliance
  upon this information by persons or entities
  other than the intended recipient is prohibited.
  If you have received this email in error please
  immediately notify us by reply email to the sender.
  You must destroy the original material and its contents from any
 computer.
  
 
 


 --
 Klein bottle for rent--inquire within.

 
 Keep it Green! To help protect the environment, please
 only print this email if necessary.
 Printing email can cost more than you think.
 Learn more on our website:

Re: Type Inference for Wicket 1.4

2010-04-16 Thread Ben Tilford
What happened to the groovy wicket builder project? I know it was on hold
until anonymous inner classes were going to be supported which were added in
groovy 1.7 irrc.

On Fri, Apr 16, 2010 at 7:58 AM, Erdinc kocam...@yahoo.com wrote:

 Or use wicket as I explained on this page :)

 http://java.dzone.com/articles/faster-development-easywicket







 
 From: James Carman jcar...@carmanconsulting.com
 To: users@wicket.apache.org
 Sent: Fri, April 16, 2010 2:05:12 PM
 Subject: Re: Type Inference for Wicket 1.4

 And, nothing is stopping you from doing something like this in your
 own code.  I have a class called ComponentUtils where I put stuff like
 this.  I have two methods:

 public static T extends Serializable IModelT modelOf(T bean);
 public static T extends Serializable IModelT modelFor(ClassT
 beanClass); // This will instantiate the object for you.

 I also have:

 public static void detachAllModelFields(Component c);

 With static imports, you can just use these methods like they're in
 your classes.

 On Fri, Apr 16, 2010 at 1:21 AM, Jeremy Thomerson
 jer...@wickettraining.com wrote:
  This is the key - and it has been discussed before (in the many grueling
 1.4
  conversations).  The short of it is that with private constructors
 there's a
  huge change and an inability to extend.  And without the private
  constructors, the static methods are dumb and extraneous because you
 would
  need hundreds of them, and you would need even more of them on your
 extended
  model and component classes.
 
  --
  Jeremy Thomerson
  http://www.wickettraining.com
 
 
 
  On Thu, Apr 15, 2010 at 8:51 AM, Thomas Kappler
  thomas.kapp...@isb-sib.chwrote:
 
  On 04/15/10 13:06, James Perry wrote:
 
  I can sympathise with that. However I don't think it would be a
  maintenance nightmare if the constructors are set to private; but that
  would mean a dramatic API change for such convenience and I'm guessing
  you're not willing to do this.
 
 
  Apart from the huge change for questionable benefit, that would also
 remove
  inheritance, which is essential to the Wicket way, because you can't
 extend
  a class with private constructors only. If you can, get a hold of Bloch,
  Effective Java, and read the insightful chapter on the constructor vs.
  static factory method trade-off.
 
  -- Thomas
 
 
 
 
  Best,
  James.
 
  On 14 April 2010 17:01, Igor Vaynbergigor.vaynb...@gmail.com  wrote:
 
  you are going to have one factory method for each constructor, its
  going to be a pita to maintain. not something we will want in core.
 
  -igor
 
  On Wed, Apr 14, 2010 at 8:51 AM, James Perry
  james.austin.pe...@gmail.com  wrote:
 
  I am looking to migrate from Wicket 1.3 and Wicket 1.4 and I really
  like the type-safe goodies but I do not like its verbosity. I was
  thinking of writing a patch that provides factories to improve the
  brevity by type inference of the generic invariant.
 
  This is an example of my idea:
 
  ModelMySuperLongNameForASimpleFooObject  model = Model.newModel();
 
  public staticT  ModelT  newModel() {
 return new ModelT();
  }
 
  Feedback welcomed. :-)
 
  --
  Best,
  James.
 
  -
  To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
  For additional commands, e-mail: users-h...@wicket.apache.org
 
 
 
  -
  To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
  For additional commands, e-mail: users-h...@wicket.apache.org
 
 
 
  -
  To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
  For additional commands, e-mail: users-h...@wicket.apache.org
 
 
 
  --
  ---
   Thomas Kapplerthomas.kapp...@isb-sib.ch
   Swiss Institute of Bioinformatics Tel: +41 22 379 51 89
   CMU, rue Michel Servet 1
   1211 Geneve 4
   Switzerland  http://www.uniprot.org
 
  ---
 
  -
  To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
  For additional commands, e-mail: users-h...@wicket.apache.org
 
 
 

 -
 To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
 For additional commands, e-mail: users-h...@wicket.apache.org






Wicket and JavaFX applet

2010-04-16 Thread Marek Šabo
Hi all,

I have problems with running javaFX applet inside wicket page. I call a
loading function from ajaxLink
(target.appendJavascript(startApplet());) and in html:

wicket:head
script src=http://dl.javafx.com/1.2/dtfx.js;
type=text/javascript/script
script type=text/javascript
function startApplet() {
fxstring = javafxString({
archive: /neobax/TrafficApplet.jar, //placed in
root next to WEB-INF
draggable: true,
width: 640,
height: 480,
code: trafficapplet.Main,
name: TrafficApplet
});
document.getElementById('taContainer').innerHTML=fxstring;
}
/script
/wicket:head
div id=taContainer /

Last thing In ajax debug is:
INFO: Initiating Ajax GET request on http://dl.javafx.com/1.2/dtfx.js
INFO: Invoking pre-call handler(s)...

Is there any way to know more about the process for better debugging?

TIA,

-- 
Marek Šabo




my book updated for Wicket 1.4.x

2010-04-16 Thread Kent Tong
Hi,

I've updated my book for Wicket 1.4.x. You may check it out or download the
first two chapters at http://agileskills2.org/EWDW



-
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org



Re: Wicket and JavaFX applet

2010-04-16 Thread Jeremy Thomerson
Use Firebug and add a breakpoint in your JS to see if it is getting
executed.  If it's not, you may try adding a semi-colon after your
startApplet() - because I don't remember if you need it when it's run in
an eval.

--
Jeremy Thomerson
http://www.wickettraining.com



On Fri, Apr 16, 2010 at 7:25 PM, Marek Šabo ms...@buk.cvut.cz wrote:

 Hi all,

 I have problems with running javaFX applet inside wicket page. I call a
 loading function from ajaxLink
 (target.appendJavascript(startApplet());) and in html:

wicket:head
script src=http://dl.javafx.com/1.2/dtfx.js;
 type=text/javascript/script
script type=text/javascript
function startApplet() {
fxstring = javafxString({
archive: /neobax/TrafficApplet.jar, //placed in
 root next to WEB-INF
draggable: true,
width: 640,
height: 480,
code: trafficapplet.Main,
name: TrafficApplet
});
document.getElementById('taContainer').innerHTML=fxstring;
}
/script
/wicket:head
 div id=taContainer /

 Last thing In ajax debug is:
 INFO: Initiating Ajax GET request on http://dl.javafx.com/1.2/dtfx.js
 INFO: Invoking pre-call handler(s)...

 Is there any way to know more about the process for better debugging?

 TIA,

 --
 Marek Šabo