I just took a look at the RenderingManager.copyTo() method. It calls
the getRenderer method I mentioned in my prior post.

It looks like I've solved this little part of the puzzle. Now I should
be able to see how the rest of the chain of events sparked by a call
to LayerViewPanel.paintComponent() plays out.

SS

On 11/30/06, Sunburned Surveyor <[EMAIL PROTECTED]> wrote:
> I think I may have found a partial answer to some of my questions to
> Larry and Jon above.
>
> It appears that the getRenderer() method of the RenderingManager
> returns the same Renderer for all Layers. (Well, all Layers that
> aren't WMS Layers.) It is incorrect to say the same Renderer. I should
> say it returns instances of the same Renderer class for all layers.
>
> I was thinking that you assigned the type of renderer to each Layer
> either during or shortly after it was created, but this is not at all
> the case.
>
> I see now that Layers contain their own Styles. These Styles contain
> information about color, stroke width, etc...that make the appearance
> of each layer unique.
>
> Now I just need to figure out when this method is called as a result
> of the LayerViewPanel.paintComponent() method. I think Eclipse can
> help me out with this, if I can remember how to get it to do what I
> want. At any rate I'm getting closer to understanding what is going on
> here.
>
> I did discover one interesting thing while I was looking at this
> method. I had always thought that OpenJUMP supported "pluggable"
> renderers. In other words, I thought we could assign a "custom"
> renderer to specified Layers at runtime. I'm looking at the source
> code for JUMP 1.1 right now and it doesn't appear this is the case in
> this version. It looks like that change would have to be hard coded
> into this method.
>
> I think Ole had talked about changing this in OpenJUMP as part of his
> work on raster/image support.
>
> Is that correct?
>
> The Sunburned Surveyor
>
> On 11/30/06, Sunburned Surveyor <[EMAIL PROTECTED]> wrote:
> > Thanks for your help Larry. Let me see if I understand what is going
> > on in this method.
> >
> > for (Iterator i = styles.iterator(); i.hasNext();) {
> > Style style = (Style) i.next();
> >
> > Get each Style  object stored in the collection of Styles in the
> > SimpleFeatureCollectionRenderer.
> >
> > for (Iterator j = layerToFeaturesMap.keySet().iterator(); j.hasNext();) {
> >   Layer layer = (Layer) j.next();
> >
> > The SimpleFeatureCollectionRenderer stores a HashMap that associates
> > Layer objects with FeatureCollections. (These FeatureCollections
> > contain the Features in the Layer visible in the current envelope of
> > the Viewport???)
> >
> > Collection features = (Collection) layerToFeaturesMap.get(layer);
> >   paint(g, features, layer, style);
> >
> > Get the Features associated with the Layer in the HashMap. Then pass
> > these Feature objects, the Layer, and the Style to the other Paint()
> > method in the SimpleFeatureCollectionRenderer class.
> >
> > Is that correct?
> >
> > If so, which class creates the layerToFeaturesMap? Does this mean a
> > SimpleFeatureCollectionRenderer can be associated with more than one
> > Layer?
> >
> > (That appears to be the case.)
> >
> > The Sunburned Surveyor
> >
> >
> > On 11/30/06, Larry Becker <[EMAIL PROTECTED]> wrote:
> > > Sunburned,
> > >
> > >    I'll let Jon answer, but the code you posted is not what he was 
> > > referring
> > > to.  Instead look into (for example) SimpleFeatureCollectionRenderer for:
> > >
> > >     protected void paint(Graphics2D g) throws Exception {
> > >         for (Iterator i = styles.iterator(); i.hasNext();) {
> > >             Style style = (Style) i.next();
> > >             if (cancelled) {
> > >                 return;
> > >             }
> > >             for (Iterator j = layerToFeaturesMap.keySet().iterator(); j
> > >                     .hasNext();) {
> > >                 Layer layer = (Layer) j.next();
> > >                 if (cancelled) {
> > >                     return;
> > >                 }
> > >                 Collection features = (Collection) layerToFeaturesMap
> > >                         .get(layer);
> > >                 paint(g, features, layer, style);
> > >             }
> > >         }
> > >     }
> > >
> > > Note the nested for loops with style on the outer and features on the
> > > inside.
> > >
> > > regards,
> > > Larry
> > >
> > >
> > > On 11/30/06, Sunburned Surveyor <[EMAIL PROTECTED]> wrote:
> > > >
> > > > Thanks for replying Jon. It looks like Larry was already able to get
> > > > to the bottom of the problem we were discussing. I'm still curious
> > > > about something though. Maybe you will have a few minutes to help me
> > > > out.
> > > >
> > > > You wrote: "If memory serves, LayerViewPanel's RenderingManager loops
> > > > through the LayerManager's layers. For each layer it loops through the
> > > > layer's Styles and calls paint() on each one."
> > > >
> > > > Yes. I think that is this code:
> > > >
> > > > public void copyTo(Graphics2D destination) {
> > > >     for (Iterator i = contentIDs().iterator(); i.hasNext();) {
> > > >       Object contentID = i.next();
> > > >
> > > >          if (getRenderer(contentID) != null) {
> > > >
> > > getRenderer(contentID).copyTo(destination);
> > > >          }
> > > >     }
> > > > }
> > > >
> > > > Here is my question though. When and how does OJ assign a Layer a
> > > > Renderer. Is this done when a layer is created, or after?
> > > >
> > > > SS
> > > >
> > > >
> > > > On 11/29/06, Jonathan Aquino <[EMAIL PROTECTED]> wrote:
> > > > > Hi Sunburned - If memory serves, LayerViewPanel's RenderingManager 
> > > > > loops
> > > > > through the LayerManager's layers. For each layer it loops through the
> > > > > layer's Styles and calls paint() on each one.
> > > > >
> > > > > Jon
> > > > >
> > > > >
> > > > >
> > > > > > -----Original Message-----
> > > > > > From: [EMAIL PROTECTED]
> > > > > >
> > > [mailto:[EMAIL PROTECTED] ] On
> > > > > > Behalf Of Sunburned Surveyor
> > > > > > Sent: Wednesday, November 29, 2006 10:29 PM
> > > > > > To: List for discussion of JPP development and use.
> > > > > > Subject: [JPP-Devel] OJ's rendering code...
> > > > > >
> > > > > >
> > > > > > I feel like I'm in a maze with no exit... :]
> > > > > >
> > > > > > I've been going through OJ's rendering code for an hour or
> > > > > > two. I was hoping to find out some more about our double call
> > > > > > to BasicStyle.paint().
> > > > > >
> > > > > > I don't think I'm going to get as near as far as I had hoped,
> > > > > > although I am throwing together some notes about the
> > > > > > rendering system I'll try to get on the wiki.
> > > > > >
> > > > > > There is one thing I haven't been able to figure out. At what
> > > > > > point, and how, does OpenJUMP associate a Renderer with a
> > > > > > Layer? I've looked at the the RenderingMananger class, the
> > > > > > LayerManager class, the LayerViewPanel class, the
> > > > > > FeatureCollectionRenderer class, and a bunch of other
> > > > > > classes, but I can't determine where this takes place.
> > > > > >
> > > > > > At some point after a Layer is created, but before or at the
> > > > > > moment it is made visible, OJ needs to decide which Renderer
> > > > > > will paint the Layer's contents on the LayerViewPanel.
> > > > > >
> > > > > > Where is this done?
> > > > > >
> > > > > > Does each Renderer track what Layers it needs to paint, or is
> > > > > > this done by the RendererMananger?
> > > > > >
> > > > > > Thanks for the help.
> > > > > >
> > > > > > The Sunburned Surveyor
> > > > > >
> > > > > >
> > > --------------------------------------------------------------
> > > > > > -----------
> > > > > > Take Surveys. Earn Cash. Influence the Future of IT
> > > > > > Join SourceForge.net's Techsay panel and you'll get the
> > > > > > chance to share your opinions on IT & business topics through
> > > > > > brief surveys - and earn cash
> > > > > >
> > > http://www.techsay.com/default.php?page=join.php&p=sourceforge
> > > > > &CID=DEVDEV
> > > > > _______________________________________________
> > > > > Jump-pilot-devel mailing list
> > > Jump-pilot-devel@lists.sourceforge.net
> > > > >
> > > https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
> > > > >
> > > > >
> > > > >
> > > -------------------------------------------------------------------------
> > > > > Take Surveys. Earn Cash. Influence the Future of IT
> > > > > Join SourceForge.net's Techsay panel and you'll get the chance to 
> > > > > share
> > > your
> > > > > opinions on IT & business topics through brief surveys - and earn cash
> > > > >
> > > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
> > > > > _______________________________________________
> > > > > Jump-pilot-devel mailing list
> > > > > Jump-pilot-devel@lists.sourceforge.net
> > > > >
> > > https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
> > > > >
> > > >
> > > >
> > > -------------------------------------------------------------------------
> > > > Take Surveys. Earn Cash. Influence the Future of IT
> > > > Join SourceForge.net's Techsay panel and you'll get the chance to share
> > > your
> > > > opinions on IT & business topics through brief surveys - and earn cash
> > > >
> > > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
> > > > _______________________________________________
> > > > Jump-pilot-devel mailing list
> > > > Jump-pilot-devel@lists.sourceforge.net
> > > >
> > > https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
> > > >
> > >
> > >
> > > -------------------------------------------------------------------------
> > > Take Surveys. Earn Cash. Influence the Future of IT
> > > Join SourceForge.net's Techsay panel and you'll get the chance to share 
> > > your
> > > opinions on IT & business topics through brief surveys - and earn cash
> > > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
> > >
> > > _______________________________________________
> > > Jump-pilot-devel mailing list
> > > Jump-pilot-devel@lists.sourceforge.net
> > > https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
> > >
> > >
> > >
> >
>

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

Reply via email to