Thanks, I looked at the source and did the following:

public JalViewPanel(String id, DefaultMutableTreeNode treeNode) {
                super(id);
                activeNode = treeNode;

                dlink = new DownloadLink("downloadMsf", 
currentJalviewAlignment) {
                        @Override
                        public void onClick() {
                                String alignment = (String) 
currentJalviewAlignment.getObject();
                                byte[] bytes = alignment.getBytes();

                                getRequestCycle().setRequestTarget(
                                                new AlignmentRequestTarget(bytes, 
"alignment.fasta"));
                        }
                };

                add(dlink);

                WebMarkupContainer container = new 
WebMarkupContainer("filename");
SimpleAttributeModifier modifier = new SimpleAttributeModifier("value",
                                getRequestCycle().urlFor(dlink, 
ILinkListener.INTERFACE));
                container.add(modifier);
                add(container);
        }

the " getRequestCycle().urlFor(dlink, ILinkListener.INTERFACE) " part works, when I put this is a label it renders the correct url which if i paste it in the address bar goes to download the file.
However, in the way it is now wicket throws an IllegalStateException:

java.lang.IllegalStateException: No Page found for component [MarkupContainer [Component id = downloadMsf]]

Any ideas?



On 11 Jun, at 23:23, Jeremy Thomerson wrote:

Look at the source - it has getURL which is a protected method.  If
you really can't figure out how to use urlFor(...) from the source -
then override getURL as such:

public CharSequence getURL() {
return super.getURL();
}

Make it public and use it to get the URL.  You can ascertain all of
this from the source.


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




On Thu, Jun 11, 2009 at 4:18 AM, Bas Vroling<[email protected]> wrote:
So does anyone have an idea how to fix this?


On 10 Jun, at 12:42, Bas Vroling wrote:

Thanks for the extensive feedback, but urlFor() does not accept that as
input...
I tried being smart and did this (please correct me if this is nonsense):

add(new WebMarkupContainer("filename").add(new SimpleAttributeModifier(
                               "value",
dlink.urlFor(ILinkListener.INTERFACE))));

when I access the pages it gives the following error:

java.lang.IllegalStateException: No Page found for component
[MarkupContainer [Component id = downloadMsf]]
   at org.apache.wicket.Component.getPage(Component.java:1755)

although the component is added to the panel. Here's the complete code:

public JalViewPanel(String id, DefaultMutableTreeNode treeNode) {
               super(id);
               activeNode = treeNode;

               DownloadLink dlink = new DownloadLink("downloadMsf",
currentJalviewAlignment) {
                       @Override
                       public void onClick() {
                               String alignment = (String)
currentJalviewAlignment.getObject();
                               byte[] bytes = alignment.getBytes();
getRequestCycle().setRequestTarget(new
AlignmentRequestTarget(bytes, "alignment.fasta"));
                       }
               };

               add(dlink);
               add(new WebMarkupContainer("filename").add(new
SimpleAttributeModifier(
                               "value",
dlink.urlFor(ILinkListener.INTERFACE))));
       }

On 10 Jun, at 12:10, Martijn Dashorst wrote:

You could always look at the source for how Link does it: getURL() calls:

       /**
        * Gets the url to use for this link.
        *
        * @return The URL that this link links to
        */
       protected CharSequence getURL()
       {
               return urlFor(ILinkListener.INTERFACE);
       }

which calls:

Component#urlFor(this, ILinkListener.INTERFACE)

so you should call:

urlFor(dlink, ILinkListener.INTERFACE)

Martijn

On Wed, Jun 10, 2009 at 11:59 AM, Bas Vroling<[email protected]> wrote:

I'm feeling not really smart here, but that doesn't work. urlFor needs
something like a irequesttarget. I tried something like this:

add(new WebMarkupContainer("filename").add(new SimpleAttributeModifier(
                             "value",
urlFor(dlink.getRequestCycle().getRequestTarget()))));

but that gives me the url of the page, not the downloadlink.

On 10 Jun, at 11:46, Martijn Dashorst wrote:

urlFor(dlink)?

Martijn

On Wed, Jun 10, 2009 at 11:27 AM, Bas Vroling<[email protected]>
wrote:

Ok, that is starting to work, thanks! Now I only need to get the url
in
the
simpleAttributeModifier. This doesn't accept models but needs a
CharSequence, which does seem logical but how do I get the actual URL
of
the
dlink model in there?

On 10 Jun, at 10:48, Martijn Dashorst wrote:

<param wicket:id="filename" />

add(new WebMarkupContainer("filename").add(new
SimpleAttributeModifier("value", ...)));

On Wed, Jun 10, 2009 at 9:57 AM, Bas Vroling<[email protected] >
wrote:

If I set setRenderBodyOnly(true) it doesn't work either, and then it shouldn't complain anymore. (wicket is the one complaining, not the
applet
btw)



On 10 Jun, at 09:53, Dorothée Giernoth wrote:

b/c you can't put a tag into a tag ... as it says: it is a value
and
it
needs a value, not a tag ... xml doesn't work that way


-----Ursprüngliche Nachricht-----
Von: Bas Vroling [mailto:[email protected]]
Gesendet: Mittwoch, 10. Juni 2009 09:41
An: [email protected]
Betreff: inserting urls in script variables

Hi guys,

I'm trying to insert a download url in a piece of template code.
The
template part looks like this:

<wicket:panel>
   <span wicket:id="familyName"></span>
<applet code="jalview.bin.JalviewLite" width="100%" height="750"
archive="jalviewApplet.jar">
           <param name="file" value="{{URL HERE}}">
           <param name="embedded" value="true"/>
           <param name="showFullId" value="false"/>
   </applet>
</wicket:panel>

The applet show a multiple sequence alignment that I would like to
be
retrieved from wicket.
In my java code I have created a link that downloads the file. This
works fine if I show the link on a page and click on it:

   DownloadLink dlink = new DownloadLink("downloadMsf",
currentJalviewAlignment) {
           @Override
           public void onClick() {
                   String alignment = (String)
currentJalviewAlignment.getObject();
                   byte[] bytes = alignment.getBytes();
                   getRequestCycle().setRequestTarget(new
AlignmentRequestTarget(bytes, "alignment" + ".fasta"));
           }
   };

When I try to do the obvious, replace the {{URL_HERE}} part with
<span
wicket:id="downloadMsf"></span> it complains about non- valid XML
and
such.

Any ideas?


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]




---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]





--
Become a Wicket expert, learn from the best:
http://wicketinaction.com
Apache Wicket 1.3.5 is released
Get it now: http://www.apache.org/dyn/closer.cgi/wicket/1.3.

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]





--
Become a Wicket expert, learn from the best: http://wicketinaction.com
Apache Wicket 1.3.5 is released
Get it now: http://www.apache.org/dyn/closer.cgi/wicket/1.3.

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]





--
Become a Wicket expert, learn from the best: http://wicketinaction.com
Apache Wicket 1.3.5 is released
Get it now: http://www.apache.org/dyn/closer.cgi/wicket/1.3.

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to