Message Board for Rorohiko Workflow Resources
https://www.rorohiko.com/cgi-bin/yabb2/YaBB.pl
General Category >> General Board >> Can Active Page Items do . . .
https://www.rorohiko.com/cgi-bin/yabb2/YaBB.pl?num=1158384232

Message started by roger purves on 09/16/06 at 17:23:51

Title: Can Active Page Items do . . .
Post by roger purves on 09/16/06 at 17:23:51
to the forum:

I am trying to get an idea of what Active Page Items
is capable of. For example, could it be
used to make “switches” that turn on
some javascript as a result of dragging
and dropping?

To be specific, imagine you have a short
vertical line segment, and beside it a small
square. (These are not part of the document
you are working on.) You have some lines of
javascript that do something to one or more of
the page elements of your document. In that
setting, can you use Active Page Items to arrange
the following behavior? Whenever you select the square,
drag it to the other side of the vertical segment and
there drop it, the javascript is run.

If there were many such switches populating an InDesign
document would Active Page Items be responsive to these
switches (on a machine where InDesign itself is reasonably fast)?

I hope these two queries are clear enough to answer.

Thank you,

Roger Purves



Title: Re: Can Active Page Items do . . .
Post by Kris Coppieters on 09/16/06 at 17:42:59
Dear Roger,

I am not 100% sure I understand, but I think the answer is yes.

Active Page Items has a 'modified' event which allows you to run an event handler attached to a page item each time something about the page item is modified (e.g. its position).

In this case, I'd attach a JavaScript to the square, and when the modified event is received, have it check its position relative to the line. If it is in a position that should cause processing, it can activate the script.

Maybe you could give me some more specifics of what you are trying to achieve?

Thanks!

Kriws

Title: Re: Can Active Page Items do . . .
Post by roger purves on 09/17/06 at 19:05:53
to Kris:

Your reply is encouraging, and it leads me
to a request. Would you be willing to
post the javascript that would
be attached to the square? To keep
things as simple as possible, ignore
the vertical line segment, and choose
any condition you want for the dragging;
e.g. drag square and drop at any position
where the x-coordinate of the upper
left hand corner of the square is less than
(say) 200 points. (And assume the initial
position of the square does not satisfy
the condition.) When the square is dropped
(mouse button released), a “hello world”
should be displayed somewhere in the document.
(I can write the “hello world” part, so all
you need to indicate is

        “hello world” part goes here

in your posted javascript.)

If this request asks too much, even a comment
to that effect will be quite helpful. It will give me
an idea of the difficulty I might have working with
Active Page Items. I am only modestly adept with
javascript and have only used it in the fairly
non-interactive environment provided by InDesign.

I can't be  specific about what I am trying to do
with Active Page Items, except to say that I
hope to use it to add some interface elements
to InDesign. InDesign is not as visual as I would
like it to be.

Thank you for your helpful reply to my first post.

Roger Purves

PS. I like the way this input window respects the
spacebar. Apple's forums don't.


Title: Re: Can Active Page Items do . . .
Post by Kris Coppieters on 09/18/06 at 12:19:44
Dear Roger,

Try this (using the demo version of APID):

1) Create some square page item, and select it
2) If not visible, bring up the Active Page Item Developer palette (with the square still selected)
3) Enter the word 'modified' in the 'Event Filter' field. Leave the two others (Script Label and List of Subjects) empty.

Enter the following JavaScript in the main text entry zone on the palette:


if (theItem.geometricBounds[0] < 100)
{
 alert("Hello World - my vertical position is < 100");
}


Click somewhere in the page area to deselect  the square.

Now start dragging the square around. If you position it in the top area of the page, the dialog will appear after each move. If you drop it in the bottom half of the page, no dialog will appear.

Is this what you were looking for?

Cheers,

Kris

Title: Re: Can Active Page Items do . . .
Post by roger purves on 09/19/06 at 17:39:48
to Kris:

That is just the guidance I was looking for.
Thank you for taking the time to set
it down so clearly. As soon as I get a
chance, which may not be until the
weekend, I will try out the procedure
you outlined.

Roger

Title: Re: Can Active Page Items do . . .
Post by Kris Coppieters on 09/19/06 at 18:25:31
Hi Roger,

Great!

Now, if you think Active Page Items can help you out - please do make time to review the cookbook.

The cookbook contains a lot of information than should help you avoid all the mistakes we've made over time when we started using Active Page Items.

The example code I've shown you is good to get a general idea of how Active Page Items 'thinks'. Play around with it, build on it, muck around with it.

But when you eventually jump into a 'real' project, then you should consider a slightly more elaborate project structure (in short: we advocate keeping the 'meat' of the API project outside of the InDesign file, in a separate, external .jsx file. The APIDTemplate.indd should assist in doing just that).

All embedded handlers should be very short - in essence nothing more than calls (.handleScriptEvent())  to the 'centralized' body of source code in the .jsx file...

You might also set up a 'controller' which watches for 'subjectModified' events - that would avoid having to store a handler in the individual page items. All that is explained in the cookbook through some hands-on examples...






Message Board for Rorohiko Workflow Resources » Powered by YaBB 2.5.2!
YaBB Forum Software © 2000-2024. All Rights Reserved.