[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
RE: [ve-dev] Accessing Selected object in VE
|
Hi Joe,
Thanks a lot it worked with the following code sample.
CDEUtilities.displayExec(getHost(), "KEY ONLY I USE" ,
new EditPartRunnable(getHost()) { //$NON-NLS-1$
protected void doRun() {
// Do stuff here
}
});
When I tried the first code sample I got an exception that said 'no thread suspended'.
Thanks
again,
Rashmi
H.Ramachandra
Hi Rashmi, The usual reason for the error you've got is that you're
trying to do something that accesses the SWT subsystem and it isn't running on
the display thread. The way to usually code around this is to do something
like public void
widgetSelected(SelectionEvent e){
// This has to be in the Display thread because it's an SWT callback
Display.getCurrent().asyncExec(new
Runnable()){ public void
run(){ // Do stuff
here } } }
The Display.asyncExec(Runnable) posts the
runnable to run asynchronously on the Display thread, and syncExec does it
synchronously. Almost all of the time it's async exec you want.
The VE has a nice helper that
called EditPartRunnable that is useful because when you're doing stuff with edit
parts (like selecting them) there is the possibility that things get
de-activated between the time you post your request and it gets run, which will
create some kind of race condition exception. The code for
EditPartRunnable is along the lines. CDEUtilities.displayExec(getHost(), "KEY ONLY I USE" ,
new EditPartRunnable(getHost()) { //$NON-NLS-1$ protected void doRun() { // Do stuff here } });
The getHost() is the model object from the
edit part (the IJavaInstance), and the String "KEY ONLY I USE" is just a unique
identifier that means that if multiple requests are queued for the same model
object and the same key then only one is executed. This allows requests to
be collapsed. Best regards,
Joe Winchester
Please respond to Discussions
people developing code for the Visual Editor project <ve-dev@xxxxxxxxxxx>
Sent by:
ve-dev-bounces@xxxxxxxxxxx
To:
"Discussions people developing code
for the Visual Editor project" <ve-dev@xxxxxxxxxxx>
cc:
Subject:
RE: [ve-dev] Accessing Selected
object in VE
hi All,
I have built a JTree(Swing ) to represent the
uicomponent of Visual Editor using the EditParts retrived from TreeViewer of
JavaVisualEditorPart .This tree is embedded in to a view. On click of the
tree node, I am retrieving the editpart stored in the tree node and trying to
select the same on the JavaVisualEditorPart's TreeViewer. This event is raising
the following exception.
org.eclipse.swt.SWTException:
Invalid thread access
Can somebody help me in
solving this?
Thanks and Regards
Rashmi H.Ramachandra
From: ve-dev-bounces@xxxxxxxxxxx
[mailto:ve-dev-bounces@xxxxxxxxxxx] On Behalf Of H Ramachandra,
Rashmi
Sent: Thursday, 29 December 2005 12:09 PM
To:
Discussions people developing code for the Visual Editor
project
Subject: RE: [ve-dev] Accessing Selected object in
VE
Hi Srimanth,
Thanks for the input. I was able to
assign a selection listener to the JavaVisualEditor. Its working fine. I can
display the kind of object that is being selected by doing toString() to the
selection object. Casting it to IJavaInstance provides with further
functionalities. But I am unable to get the edit domain for the
JavaVisualEditorPart as the required method ' getEditDomain()' does not seem to
exist. I want to loop through all the
components from the root model to get to the component which i want it to be
selected. Can
you please help me out. Thank You and Regards Rashmi H.Ramachandra
From: ve-dev-bounces@xxxxxxxxxxx
[mailto:ve-dev-bounces@xxxxxxxxxxx] On Behalf Of Srimanth
Gunturi
Sent: Tuesday, 27 December 2005 10:54 PM
To:
Discussions people developing code for the Visual Editor
project
Subject: Re: [ve-dev] Accessing Selected object in
VE
Hi
Rashmi,
> how do I
get the selected component on the visual editor canvas?
If you can get the EditorPart
(JavaVisualEditorPart), you can add a listener to its site's page's selection
provider -
getSite().getPage().addSelectionListener(new
ISelectionListener(){
public void
selectionChanged(IWorkbenchPart part, ISelection selection) {
System.out.println("Selection Changed!");
}
});
> How do I get access to the root
model
'JavaVisualEditorPart.getEditDomain().getDiagramData()' will give you
the root model. You can cast it to the 'BeanSubclassComposition' class to access
the this type, the components etc.
Or if you are coming from Codegen's model,
'IBeanDeclModel.getCompositionModel().getModelRoot()' should give you the
'BeanSubclassComposition' also.
> and the IJAvaInstance of the selected object.
When you get the GEF EditPart of the selected object
as described above, just do a 'getModel()' on the EditPart to get the
IJavaInstance.
Regards,
Sri.
"H Ramachandra, Rashmi"
<rashmi.h.ramachandra@xxxxxxx> Sent by:
ve-dev-bounces@xxxxxxxxxxx
12/26/2005 11:40 PM
Please respond
to Discussions people developing code for the Visual Editor
project |
|
To
| <ve-dev@xxxxxxxxxxx>
|
cc
|
|
Subject
| [ve-dev] Accessing
Selected object in VE |
|
hi all,
how do I get the selected component on the
visual editor canvas?
How
do I get access to the root model and the IJAvaInstance of the selected object.
I have tried to go through source code of
'org.eclipse.ve.internal.java.codegen.editorpart.BeansList'
and
'org.eclipse.ve.internal.java.codegen.editorpart.JavaVisualEditorPart'. I am not
able to find any entry point for accessing selected objects.
My requirement is to build a tree that partially
replicates the JavaBean View to show both visual and non-visual components
present in the java file in the form of a tree.Is there any API provided for
developers to access the components in the visual editor. I have tried going
through the current API and the source code available for tracking the JavaBean
View components, but it has not been fruitful
Can anybody please help.
-rashmi _______________________________________________
ve-dev mailing
list
ve-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/ve-dev_______________________________________________
ve-dev
mailing
list
ve-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/ve-dev