Markers for each EditPart? [message #139208] |
Tue, 22 June 2004 03:57  |
Eclipse User |
|
|
|
Originally posted by: bbdaffy.hotmail.com
Hi,
Trying to do something like the following, but dun really know where to
start.
I would like to create something like the Task View, (or maybe make use of
the existing Task View) to display TODO items for each individual Figure.
Say, I create a new Figure on the editor, it will automatically generate a
list of TODO items. When I select this figure, the TODO list will be
displayed in a View (eg. Task View?). Double clicking on each TODO item
will trigger some action (say, bring up a dialog for user input eg.), and
once the user has completed the task, the changes will be updated to the
editpart and to the model.
Is there an article I can read or some advice as to how to go about this?
Thanks...
Regards,
Lee
|
|
|
|
|
|
Re: Markers for each EditPart? [message #139858 is a reply to message #139285] |
Thu, 24 June 2004 08:38   |
Eclipse User |
|
|
|
Hi Nicole,
I have solved this issue in my project so here is a sample code to show
you how to deal with markers :
1) You should implement the gotoMarker method in your editor:
class MyEditor extends GraphicalEditorWithPalette implements
org.eclipse.ui.ide.IGotoMarker{
public void gotoMarker(IMarker marker_p) {
try {
String nmsObjectID = (String)
marker_p.getAttribute("objectID");
_
// The keys are model objects and we are looking for the rigth
editPart
Map editPartRegistry =
getGraphicalViewer().getEditPartRegistry();
Iterator iteratorOnKeys = editPartRegistry.keySet().iterator();
boolean found = false;
ArrayList selectedPart = new ArrayList();
while (iteratorOnKeys.hasNext() && !found) {
TopologyElement subPart = null;
Object object = null;
// Be careful, some keys are not model object but ????
try {
object = iteratorOnKeys.next();
if (object instanceof TopologyElement)
subPart = (TopologyElement) object;
} catch (ClassCastException e) {
}
if (null != subPart) {
ModelElement element = subPart.getModelObject();
if (null != element) {
String elementID = element.getID();
if (elementID.equals(nmsObjectID)) {
found = true;
AbstractEditPart editPart = (AbstractEditPart)
editPartRegistry.get(subPart);
selectedPart.add(editPart);
}
}
}
}
// let's show the retrieved editPart
if (!selectedPart.isEmpty()) {
StructuredSelection selection = new
StructuredSelection(selectedPart);
getGraphicalViewer().setSelection(selection);
}
} catch (CoreException e_p) {
_logger.error("TopologyEditor.gotoMarker()", e_p);
}
}
}
2) Defining your marker in your plugin.xml associated to your editor, to
be able to retrieve objects
<extension
id="myProblemMarker"
name="%problemName"
point="org.eclipse.core.resources.markers">
<super
type="org.eclipse.core.resources.problemmarker">
</super>
<attribute
name="objectID">
</attribute>
</extension>
3) Save the IFile as a IResource from MyEditor.setInput(IEditorInput
input){
IFile file = ((IFileEditorInput) input).getFile();
IResource resource = file;
}
4) call the method below with the rigth parameter when your code detects
an error. (your checkMethod may be called in your listener class for
instance in LogicalEditPart when a object's attribute changes)
/**
* Create a Problem Marker
* @param resource_p The resource_p for which we are creating a new
Marker
* @param severity_p the severity for this problem
* @param priority_p the priority to fix the problem
* @param objectID_p the object's id producing the error
* @param message_p a user friendly string describing the problem
*/
public void createProblem(IResource resource_p, int severity_p, int
priority_p, String objectID_p, String message_p) {
try {
IMarker marker =
resource_p.createMarker("org.testmarker.myexemple.myProblemMarker ");
marker.setAttribute(IMarker.SEVERITY, severity_p);
marker.setAttribute(IMarker.MESSAGE, message_p);
marker.setAttribute(IMarker.PRIORITY, priority_p);
marker.setAttribute("userEditable", false);
marker.setAttribute("objectID", objectID_p);
} catch (CoreException e) {
_logger.warn("MarkerHandler.createProblem(),", e);
}
}
Stephane
Nicole wrote:
> Hi,
> Does that mean my models must each implement the IResource interface?
> Regards,
> Lee
> Gunnar Wagenknecht wrote:
> > Nicole wrote:
> > > Is there an article I can read or some advice as to how to go about
> > > this? Thanks...
> > Not sure but should find suitable information in the help. Look at IMarker,
> > ther marker extension point and how attach markers to resources. In general
> > marker changes are fired as/with regular resource change events.
> > You just need a mechanism to create/update figures when marker changes are
> > fired.
> > Cu, Gunnar
|
|
|
Re: Markers for each EditPart? [message #139951 is a reply to message #139858] |
Thu, 24 June 2004 22:37   |
Eclipse User |
|
|
|
Originally posted by: bbdaffy.hotmail.com
Hi,
Wow... Thanks. This is definitely very helpful... :) Appreciate it.
Regards,
Lee
Stephane wrote:
> Hi Nicole,
> I have solved this issue in my project so here is a sample code to show
> you how to deal with markers :
> 1) You should implement the gotoMarker method in your editor:
> class MyEditor extends GraphicalEditorWithPalette implements
> org.eclipse.ui.ide.IGotoMarker{
> public void gotoMarker(IMarker marker_p) {
> try {
> String nmsObjectID = (String)
> marker_p.getAttribute("objectID");
> _
> // The keys are model objects and we are looking for the rigth
> editPart
> Map editPartRegistry =
> getGraphicalViewer().getEditPartRegistry();
> Iterator iteratorOnKeys = editPartRegistry.keySet().iterator();
> boolean found = false;
> ArrayList selectedPart = new ArrayList();
> while (iteratorOnKeys.hasNext() && !found) {
> TopologyElement subPart = null;
> Object object = null;
> // Be careful, some keys are not model object but ????
> try {
> object = iteratorOnKeys.next();
> if (object instanceof TopologyElement)
> subPart = (TopologyElement) object;
> } catch (ClassCastException e) {
> }
> if (null != subPart) {
> ModelElement element = subPart.getModelObject();
> if (null != element) {
> String elementID = element.getID();
> if (elementID.equals(nmsObjectID)) {
> found = true;
> AbstractEditPart editPart = (AbstractEditPart)
> editPartRegistry.get(subPart);
> selectedPart.add(editPart);
> }
> }
> }
> }
> // let's show the retrieved editPart
> if (!selectedPart.isEmpty()) {
> StructuredSelection selection = new
> StructuredSelection(selectedPart);
> getGraphicalViewer().setSelection(selection);
> }
> } catch (CoreException e_p) {
> _logger.error("TopologyEditor.gotoMarker()", e_p);
> }
> }
> }
> 2) Defining your marker in your plugin.xml associated to your editor, to
> be able to retrieve objects
> <extension
> id="myProblemMarker"
> name="%problemName"
> point="org.eclipse.core.resources.markers">
> <super
> type="org.eclipse.core.resources.problemmarker">
> </super>
> <attribute
> name="objectID">
> </attribute>
> </extension>
> 3) Save the IFile as a IResource from MyEditor.setInput(IEditorInput
> input){
> IFile file = ((IFileEditorInput) input).getFile();
> IResource resource = file;
> }
> 4) call the method below with the rigth parameter when your code detects
> an error. (your checkMethod may be called in your listener class for
> instance in LogicalEditPart when a object's attribute changes)
> /**
> * Create a Problem Marker
> * @param resource_p The resource_p for which we are creating a new
> Marker
> * @param severity_p the severity for this problem
> * @param priority_p the priority to fix the problem
> * @param objectID_p the object's id producing the error
> * @param message_p a user friendly string describing the problem
> */
> public void createProblem(IResource resource_p, int severity_p, int
> priority_p, String objectID_p, String message_p) {
> try {
> IMarker marker =
> resource_p.createMarker("org.testmarker.myexemple.myProblemMarker ");
> marker.setAttribute(IMarker.SEVERITY, severity_p);
> marker.setAttribute(IMarker.MESSAGE, message_p);
> marker.setAttribute(IMarker.PRIORITY, priority_p);
> marker.setAttribute("userEditable", false);
> marker.setAttribute("objectID", objectID_p);
> } catch (CoreException e) {
> _logger.warn("MarkerHandler.createProblem(),", e);
> }
> }
> Stephane
> Nicole wrote:
> > Hi,
> > Does that mean my models must each implement the IResource interface?
> > Regards,
> > Lee
> > Gunnar Wagenknecht wrote:
> > > Nicole wrote:
> > > > Is there an article I can read or some advice as to how to go about
> > > > this? Thanks...
> > > Not sure but should find suitable information in the help. Look at
IMarker,
> > > ther marker extension point and how attach markers to resources. In
general
> > > marker changes are fired as/with regular resource change events.
> > > You just need a mechanism to create/update figures when marker changes
are
> > > fired.
> > > Cu, Gunnar
|
|
|
Re: Markers for each EditPart? [message #724000 is a reply to message #139951] |
Sat, 10 September 2011 05:21  |
Eclipse User |
|
|
|
Hi
I have implemented the IGotoMarker Interface in myEditor (Graphical Editor) and written the implementation code for the gotoMarker Method, but when i click the problem displayed in the problemview, the gotoMarker method is not called.
I have added the following code in the getAdapter() of my Editor
if( type.equals( IGotoMarker.class ) )
{
return this;
}
Kindly let me know what can be done for this problem.
|
|
|
Powered by
FUDForum. Page generated in 0.03606 seconds