| 
| paintComponent ignored ? [message #79444] | Tue, 08 February 2005 05:17  |  | 
| Eclipse User  |  |  |  |  | Originally posted by: mik.c-l-a-s-s-x.it 
 Hello,
 
 I've extended a JPanel and put some simple test code in the paintComponent:
 
 protected void paintComponent(Graphics g)
 {
 super.paintComponent(g);
 g.setColor(Color.red);
 g.fillRect(0, 0, getWidth(), getHeight());
 };
 
 It looks like VE completely ignores the code in Design mode. A missing
 feature ?
 
 Mik
 --
 |  |  |  | 
|  | 
|  | 
|  | 
|  | 
| 
| Re: paintComponent ignored ? [message #79931 is a reply to message #79841] | Fri, 11 February 2005 10:33   |  | 
| Eclipse User  |  |  |  |  | Originally posted by: mik.c-l-a-s-s-x.it 
 "Joe Winchester" <winchest@uk.ibm.com> ha scritto nel messaggio
 news:cufp4k$it5$1@www.eclipse.org...
 > Hi Michele,
 >
 >> I've extended a JPanel and put some simple test code in the
 >> paintComponent:
 >>
 >>  protected void paintComponent(Graphics g)
 >>  {
 >>   super.paintComponent(g);
 >>   g.setColor(Color.red);
 >>   g.fillRect(0, 0, getWidth(), getHeight());
 >>  };
 >>
 >> It looks like VE completely ignores the code in Design mode. A missing
 >> feature ?
 >
 > Quick question.  Is this an inner class ?  From your other post I assumed
 > it was, but re-reading your post you don't mention whether it is or not ?
 
 No it's not the inner-class case. Imagine you want to design your own JPanel
 in VE (i.e. a JPanel with a background image).
 
 > If it isn't an inner class and you just extended JPanel and put code
 > then this won't be executed until you use the class.  At design time we
 > don't instantiate the bean being edited - we use the superclass instead.
 
 Ok, that's my case.
 
 > The reason is that the bean being edited may not be compiled, and also
 > it's what you're going to be altering as you edit your Java code.  While
 > you edit the bean isn't necessarily compiled so what we do is instantiate
 > the superclass and from analyzing the code work out what properties are
 > set and what child JavaBeans there are and then create a prototype
 > instance of what we think it will look like at design time. Any custom
 > code (like yours) gets passed by.
 
 Well, if you can check for the validity of the compiled class (i.e. it is
 compiled without compilation errors), maybe you could use it to render a
 preview at design time.
 Buggy custom painting code would prevent the rendering of the preview, of
 couse (imagine an infinite loop or a stack overflow). In this case you could
 give a timeout to the preview rendering thread in order to check and break
 the execution of bad custom code. A red X and a stacktrace could help to
 find the error.
 
 > You could extend you JPanel once more when you will see your custom code.
 
 Yes, that's what I'm doing now, but I need to extend twice..
 
 Cheers,
 
 Mik
 
 --
 ============================================================ ================
 > ClassX Development Italy  Via Francesca, 368/I I-56030 S.M. a Monte (PI) <
 > Tel.(+39)-0587-705153  Fax.(+39)-0587-705153  WEB: http://www.classx.it  <
 ============================================================ ================
 |  |  |  | 
| 
| Re: paintComponent ignored ? [message #80707 is a reply to message #79931] | Fri, 18 February 2005 18:00  |  | 
| Eclipse User  |  |  |  |  | Hi  Michele, 
 > Well, if you can check for the validity of the compiled class (i.e. it is
 > compiled without compilation errors), maybe you could use it to render a
 > preview at design time.
 
 But what if the previous compilation was stale ?  As the designer of the
 class you might alter the code within your paintComponent(...) method
 and expect to see this reflected ?  Also what if the previous class has
 some components in it and some property settings.  If we instantiate the
 class itself this will be what the user sees.  Then as you alter your
 code we couldn't update the design canvas for you as we'd have to wait
 for you to do a full save/compile ?  By parsing the code and analyzing
 what the child components and property settings are it means we can
 apply the result of source changes directly to the GUI without having to
 wait for a save and compile.
 
 > Yes, that's what I'm doing now, but I need to extend twice..
 
 Sorry about that.  The only thing I can think of is that if we had
 custom code that recognized certain methods like paintComponent(...) for
 example and attempted to somehow execute this using reflection.  This is
 sort of what we do anyway for child components and property settings
 where the parser looks for patterns and then models them and applies
 live property settings.  The problem with this however is that you can
 never be complete as all we'd do is get closer to the solution you want
 but never there as there'd be some other situation we wouldn't cope with
 - sort of like Xeno's paradox.
 
 Best regards,
 
 Joe Winchester
 |  |  |  | 
| 
| Re: paintComponent ignored ? [message #605095 is a reply to message #79444] | Tue, 08 February 2005 11:28  |  | 
| Eclipse User  |  |  |  |  | Originally posted by: richkulp.us.NO_SPAM.ibm.com 
 It won't see such overrides in the class that is being edited because we
 don't actually create an instance of the class being edited. That is
 because since the class is changing it is not yet compiled and we can't
 execute it.
 
 We do execute superclasses though.
 
 --
 Thanks,
 Rich Kulp
 |  |  |  | 
| 
| Re: paintComponent ignored ? [message #605100 is a reply to message #79513] | Tue, 08 February 2005 12:26  |  | 
| Eclipse User  |  |  |  |  | Ok, but at least you could execute/display it when it has been correctly compiled, at CTRL-S time.
 It's an important feature, even more when creating/editing visual custom
 components.
 
 This missing feature sounds like a regression since the good old VAJ days.
 
 Mik
 --
 
 
 "Rich Kulp" <richkulp@us.NO_SPAM.ibm.com> ha scritto nel messaggio
 news:cuapbu$qas$1@www.eclipse.org...
 > It won't see such overrides in the class that is being edited because we
 > don't actually create an instance of the class being edited. That is
 > because since the class is changing it is not yet compiled and we can't
 > execute it.
 >
 > We do execute superclasses though.
 >
 > --
 > Thanks,
 > Rich Kulp
 |  |  |  | 
| 
| Re: paintComponent ignored ? [message #605142 is a reply to message #79527] | Wed, 09 February 2005 06:38  |  | 
| Eclipse User  |  |  |  |  | Hi Michele, 
 > This missing feature sounds like a regression since the good old VAJ days.
 
 I don't think VAJ did anything that would have helped here.  VAJ
 actually persisted your GUI as a set of serialized objects that it
 re-opened on display and it also regenerated the code each time in a top
 down fashion.  Any custom source code you write (like an inner class)
 would never make it to the GUI because it worked from the GUI down and
 not from the source up.  You can always make your inner class a fully
 fledged class and looking at your code unless you really are going to
 access non-public methods and state of your outer class I see no reason
 not to do that.  If you do need to access state of the outer classs just
 make stuff package protected and put the two in the same package.
 
 Best regards,
 
 Joe Winchester
 |  |  |  | 
| 
| Re: paintComponent ignored ? [message #605183 is a reply to message #79444] | Thu, 10 February 2005 13:55  |  | 
| Eclipse User  |  |  |  |  | Hi Michele, 
 > I've extended a JPanel and put some simple test code in the paintComponent:
 >
 >  protected void paintComponent(Graphics g)
 >  {
 >   super.paintComponent(g);
 >   g.setColor(Color.red);
 >   g.fillRect(0, 0, getWidth(), getHeight());
 >  };
 >
 > It looks like VE completely ignores the code in Design mode. A missing
 > feature ?
 
 Quick question.  Is this an inner class ?  From your other post I
 assumed it was, but re-reading your post you don't mention whether it is
 or not ?
 
 If it isn't an inner class and you just extended JPanel and put code
 then this won't be executed until you use the class.  At design time we
 don't instantiate the bean being edited - we use the superclass instead.
 The reason is that the bean being edited may not be compiled, and also
 it's what you're going to be altering as you edit your Java code.  While
 you edit the bean isn't necessarily compiled so what we do is
 instantiate the superclass and from analyzing the code work out what
 properties are set and what child JavaBeans there are and then create a
 prototype instance of what we think it will look like at design time.
 Any custom code (like yours) gets passed by.
 
 You could extend you JPanel once more when you will see your custom code.
 
 Best regards,
 
 Joe
 |  |  |  | 
| 
| Re: paintComponent ignored ? [message #605201 is a reply to message #79841] | Fri, 11 February 2005 10:33  |  | 
| Eclipse User  |  |  |  |  | "Joe Winchester" <winchest@uk.ibm.com> ha scritto nel messaggio news:cufp4k$it5$1@www.eclipse.org...
 > Hi Michele,
 >
 >> I've extended a JPanel and put some simple test code in the
 >> paintComponent:
 >>
 >>  protected void paintComponent(Graphics g)
 >>  {
 >>   super.paintComponent(g);
 >>   g.setColor(Color.red);
 >>   g.fillRect(0, 0, getWidth(), getHeight());
 >>  };
 >>
 >> It looks like VE completely ignores the code in Design mode. A missing
 >> feature ?
 >
 > Quick question.  Is this an inner class ?  From your other post I assumed
 > it was, but re-reading your post you don't mention whether it is or not ?
 
 No it's not the inner-class case. Imagine you want to design your own JPanel
 in VE (i.e. a JPanel with a background image).
 
 > If it isn't an inner class and you just extended JPanel and put code
 > then this won't be executed until you use the class.  At design time we
 > don't instantiate the bean being edited - we use the superclass instead.
 
 Ok, that's my case.
 
 > The reason is that the bean being edited may not be compiled, and also
 > it's what you're going to be altering as you edit your Java code.  While
 > you edit the bean isn't necessarily compiled so what we do is instantiate
 > the superclass and from analyzing the code work out what properties are
 > set and what child JavaBeans there are and then create a prototype
 > instance of what we think it will look like at design time. Any custom
 > code (like yours) gets passed by.
 
 Well, if you can check for the validity of the compiled class (i.e. it is
 compiled without compilation errors), maybe you could use it to render a
 preview at design time.
 Buggy custom painting code would prevent the rendering of the preview, of
 couse (imagine an infinite loop or a stack overflow). In this case you could
 give a timeout to the preview rendering thread in order to check and break
 the execution of bad custom code. A red X and a stacktrace could help to
 find the error.
 
 > You could extend you JPanel once more when you will see your custom code.
 
 Yes, that's what I'm doing now, but I need to extend twice..
 
 Cheers,
 
 Mik
 
 --
 ============================================================ ================
 > ClassX Development Italy  Via Francesca, 368/I I-56030 S.M. a Monte (PI) <
 > Tel.(+39)-0587-705153  Fax.(+39)-0587-705153  WEB: http://www.classx.it  <
 ============================================================ ================
 |  |  |  | 
| 
| Re: paintComponent ignored ? [message #605409 is a reply to message #79931] | Fri, 18 February 2005 18:00  |  | 
| Eclipse User  |  |  |  |  | Hi  Michele, 
 > Well, if you can check for the validity of the compiled class (i.e. it is
 > compiled without compilation errors), maybe you could use it to render a
 > preview at design time.
 
 But what if the previous compilation was stale ?  As the designer of the
 class you might alter the code within your paintComponent(...) method
 and expect to see this reflected ?  Also what if the previous class has
 some components in it and some property settings.  If we instantiate the
 class itself this will be what the user sees.  Then as you alter your
 code we couldn't update the design canvas for you as we'd have to wait
 for you to do a full save/compile ?  By parsing the code and analyzing
 what the child components and property settings are it means we can
 apply the result of source changes directly to the GUI without having to
 wait for a save and compile.
 
 > Yes, that's what I'm doing now, but I need to extend twice..
 
 Sorry about that.  The only thing I can think of is that if we had
 custom code that recognized certain methods like paintComponent(...) for
 example and attempted to somehow execute this using reflection.  This is
 sort of what we do anyway for child components and property settings
 where the parser looks for patterns and then models them and applies
 live property settings.  The problem with this however is that you can
 never be complete as all we'd do is get closer to the solution you want
 but never there as there'd be some other situation we wouldn't cope with
 - sort of like Xeno's paradox.
 
 Best regards,
 
 Joe Winchester
 |  |  |  | 
Powered by 
FUDForum. Page generated in 0.05194 seconds