Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
R: R: R: R: [gef-dev] How to redraw a Connection

I found the problem...
In my Editor every EditPart has its own Appearence. This is an utility class
that manages the EditPart graphical aspect. I need to get an instance of
this class and reflect the change in the model.

Thanks for your help, now all works fine.

Regards,
	Alessandro 

-----Messaggio originale-----
Da: gef-dev-bounces@xxxxxxxxxxx [mailto:gef-dev-bounces@xxxxxxxxxxx] Per
conto di Siddharth Shankar
Inviato: venerdì 22 settembre 2006 11.33
A: GEF development
Oggetto: Re: R: R: R: [gef-dev] How to redraw a Connection

Hi,

You don't ned to have your own repaint method. I'll try to give you a step
by step account of how can you go ahead and make the changes in the
connection model reflect on to the connection figure (say a polyline
connection) 

Make the change in the Model (typically change the model in a Command)
The model method having this change should have its own fire property change
method
now this property change event should be caught in Connection Edit part 
In Connection Edit Part depending on the property change do a getFigure and
make whatever view level changes u want to make. Don't do anything else

example
say your model fires a event CHANGE_CONN_COLOR
In your edit part propertyChange method do a 
getFigure.setForegroundColor(fg) where "fg" is the changed color
when the property name is CHANGE_CONN_COLOR

Does the above steps work differenly for you?

Thanks,
Siddharth


On 9/22/06, Alessandro Negri <negri@xxxxxxxxxxx> wrote:

	Thank you so much for your help...I call the superclass repaint
method by
	this way: getFigure().repaint()!
	Do you think I need to do my own repaint method? What I need to do
in my
	repaint method to correctly redraw my PolyLineConnection? 
	
	Thanks in advance, this is very important for me :-)
	
	-----Messaggio originale-----
	Da: gef-dev-bounces@xxxxxxxxxxx [mailto: gef-dev-bounces@xxxxxxxxxxx
<mailto:gef-dev-bounces@xxxxxxxxxxx> ] Per
	conto di Siddharth Shankar
	Inviato: giovedì 21 settembre 2006 15.50
	A: GEF development
	Oggetto: Re: R: R: [gef-dev] How to redraw a Connection
	
	What exactly are you doing in your repaint method which u say is not
getting 
	updated?
	I'll try that stuff for a model change in one of my own
PolyLineConnection
	and let you know if I was able to do it successfully but any more
replies
	from me only tomorrow now:-)
	
	
	On 9/21/06, Alessandro Negri < negri@xxxxxxxxxxx> wrote:
	
	        Thanks Siddharth, all works fine as you say...but not the
last
	point.
	        In refreshVisuals I call getFigure().repaint() (the
	TransitionEditPart), but
	        nothing happens to the view. How can I "update" it?
	
	        Sorry, but I tried every method with any result...
	
	        -----Messaggio originale-----
	        Da: gef-dev-bounces@xxxxxxxxxxx [mailto:
gef-dev-bounces@xxxxxxxxxxx
	<mailto: gef-dev-bounces@xxxxxxxxxxx
<mailto:gef-dev-bounces@xxxxxxxxxxx> > ] Per
	        conto di Siddharth Shankar
	        Inviato: giovedì 21 settembre 2006 15.30
	        A: GEF development
	        Oggetto: Re: R: [gef-dev] How to redraw a Connection 
	
	        Hi,
	        Well some how i cant comprehend why making the changes in
	refreshVisuals is
	        not working out for you. Try one other way out though I am
not sure
	if that
	        is the best possible way but this would work. 
	        Whenever you make change in the model, make a call to
	        firePropertyChange(propname, oldValue, newValue) [Here I am
assuming
	your
	        model has a PropertyChangeSupport attached to it]. Now in
your edit 
	part's
	        propertyChange method when the designated prop name is
fired,
	conditionally
	        call refreshVisuals and this should work. In refreshVisuals
do a
	getFigure
	        and update whichever view level components u have. It
definitely 
	works for
	        me and hope it does for you too.:-)
	
	        Thanks,
	        Siddharth
	
	
	        On 9/21/06, Alessandro Negri < negri@xxxxxxxxxxx
	<mailto: negri@xxxxxxxxxxx> > wrote:
	
	                I'm just doing like this: in my refreshVisuals
method I
	change the
	        aspect of
	                the PolylineConnection associated to the EditPart,
but this 
	doesn't
	        reflect
	                in a visual change of the line. I need to force a
redraw of
	the
	        view, but I
	                don't know how. I tried getFigure().repaint or
	        getFigure().revalidate(), but 
	                nothing changes.
	                So, the model is updated, the line associated to the
Edit
	Part is
	        updated,
	                but the line doesn't change its aspect. I think I
need to 
	        delete/add/refresh
	                the part but I don't know how!?!?
	
	                Regards,
	                        Alessandro
	
	                -----Messaggio originale-----
	                Da: gef-dev-bounces@xxxxxxxxxxx [mailto:
	gef-dev-bounces@xxxxxxxxxxx
	        <mailto: gef-dev-bounces@xxxxxxxxxxx
<mailto:gef-dev-bounces@xxxxxxxxxxx> 
	<mailto:gef-dev-bounces@xxxxxxxxxxx> > ] Per
	                conto di Siddharth Shankar
	                Inviato: giovedì 21 settembre 2006 10.27
	                A: GEF development
	                Oggetto: Re: [gef-dev] How to redraw a Connection
	
	                Hi,
	
	                I guess you can try out the following if you haven't
already 
	given
	        it a
	                shot.
	                In the propertyChange method of transition edit part
	depending upon
	        the
	                property change call the refreshVisuals method.
Override the 
	method
	                refreshVisuals in transition edit part and make
whatever
	viewer
	        level
	                changes you wish to make, It should work out.
	
	                On a very high level you can take a leaf out of how 
	bendpoints are
	        reflected
	                on the UI wherein setting the Routing Constraint in
refresh
	Visuals
	        with the
	                latest list of bendpoints reflects the newly added/
deleted 
	        bendpoints.
	
	                Thanks and Regards,
	                Siddharth
	
	                On 9/21/06, Alessandro Negri <negri@xxxxxxxxxxx>
wrote:
	
	                        Hi all,
	                        i'm developing a multipage Editor using GEF.
	                        I have some blocks connected through
standard
	Connection
	        objects, in
	                        particular I have a TransitionEditPart that
extends
	                        AbstractConnectionEditPart.
	                        The TransitionEditPart draws a Polyline
connection
	as
	        follows: 
	
	                        PolylineConnection c = new
PolylineConnection();
	                        setLineAppearence(c);
	                        c.setConnectionRouter(new
	ManhattanConnectionRouter());
	                        // Creates a tooltip with the transition ID 
	                        tooltip = new Label("  "+host.getID()+"  ");
	                        tooltip.setOpaque(true);
	                        c.setToolTip(tooltip);
	                         c.setTargetDecoration(new
PolylineDecoration());
	                        return c;
	
	                        The problem is that I have 5 types of
transitions
	and
	        everyone has
	                its own 
	                        color and appearence (I set this with the
	setLineAppearence
	        method).
	                The
	                        TransitionEditPart is associated to a
PropertySheet
	that
	        shows its
	                type.
	                        When I change the type in the Property View,
I
	update the
	        model and
	                then
	                        fire a property change event, caught by the 
	propertyChange
	        method of
	                my
	                        TransitionEditPart.
	                        So...the question: how can I force the
Connection to
	be
	        redrawn? I
	                tried all 
	                        the repaint, revalidate, refresh methods,
but the
	visual
	        aspect of
	                the edit
	                        part never changes according to the the
modified
	property. I 
	        think
	                that a
	                        solution could be to delete the Connection
and then
	redraw
	        it, but
	                I'm not
	                        able to do that... 
	
	                        Any suggestion?
	
	                        In general which is the best way to do a
graphical
	refresh
	        of an
	                Edit Part
	                        after a property change event? My solution
in other 
	cases
	        was to
	                        delete/add/refresh the part...
	
	                        Thanks in advance,
	                                Alessandro
	
	
_______________________________________________ 
	                        gef-dev mailing list
	                         gef-dev@xxxxxxxxxxx <mailto:
gef-dev@xxxxxxxxxxx
	<mailto: gef-dev@xxxxxxxxxxx> >
	
https://dev.eclipse.org/mailman/listinfo/gef-dev
	
	
	
	
	
	                --
	                Thanks,
	                Siddharth
	
	                _______________________________________________
	                gef-dev mailing list
	                 gef-dev@xxxxxxxxxxx <mailto:gef-dev@xxxxxxxxxxx> 
	                 https://dev.eclipse.org/mailman/listinfo/gef-dev
	< https://dev.eclipse.org/mailman/listinfo/gef-dev
<https://dev.eclipse.org/mailman/listinfo/gef-dev> >
	
	
	
	
	
	        --
	        Thanks,
	        Siddharth
	
	        _______________________________________________
	        gef-dev mailing list 
	        gef-dev@xxxxxxxxxxx <mailto:gef-dev@xxxxxxxxxxx>
	        https://dev.eclipse.org/mailman/listinfo/gef-dev 
	
	
	
	
	
	--
	Thanks,
	Siddharth
	
	_______________________________________________
	gef-dev mailing list
	gef-dev@xxxxxxxxxxx
	https://dev.eclipse.org/mailman/listinfo/gef-dev
<https://dev.eclipse.org/mailman/listinfo/gef-dev> 
	




-- 
Thanks,
Siddharth 



Back to the top