SlideShare a Scribd company logo
Interfacing to Eclipse Standard Views




Eclipse contains a large number of standard views that can be extended
to support new languages or data models. This model focus on the
interface to the most common Eclipse views: Problems View, Outline
View, and the Properties View.




Redistribution and other use of this material requires written permission from The RCP Company.

L0001 - 2010-11-27
Problems View


The problems view is used to show resource markers, which can represent
anything(!), but normally are error conditions

Markers are installed on resources (IResource)
     The file of an editor is found via the editor input (IEditorInput) via
      adaption
       IFile res = (IFile)editor.getEditorInput().getAdapter(IFile.class);



     This only works for files in the workspace – not files opened via
      “File”→”Open File…” – for the later the above construct returns null




2
                                                                              L0001 - 2010-11-27
Markers (IMarker)


Markers are associated as detail data on resources (IResource)
Markers have a type, an unique ID (per resource) and a set of text attributes
New marker types are defined with the org.eclipse.core.resources.markers extension point
     Each marker type has a name, a set of super-marker-types, a persistence and a set
      of attributes
     The resulting new marker type will inherit all attributes from super-markertypes

Only persistent markers are saved between invocations
     A new marker type is non-persistent unless explicitly set

Basic marker types related to problems
     org.eclipse.core.resources.problemmarker – with attributes severity, message, and
      location
     org.eclipse.core.resources.textmarker – with attributes charStart, charEnd,
      lineNumber
All relevant marker related constants are defined in IMarker
Makers can be grouped in the Problems View via support in the
org.eclipse.ui.ide.markerSupport extension point


3
                                                                                          L0001 - 2010-11-27
Creating a new Marker Type


The extension for a new marker type is special
     The id of the new marker type is specified directly in the extension and
      not in a sub-element (like for views and perspectives)
     If no id is specified, the target Eclipse cannot start!!!



        <extension id="problem" name=“My Personal Problem"
            point="org.eclipse.core.resources.markers">
          <super type="org.eclipse.core.resources.problemmarker" />
        </extension>




4
                                                                           L0001 - 2010-11-27
Markers Manipulation


Markers are accessed using methods of IResource
     createMarker(type) – creates and returns a new marker of the specified
      type
     findMarker(id) – find a specific marker
     deleteMarkers(type, includeSubtypes, depth) – deletes all markers of the
      specified type
     …and many more…

Markers also has a large set of methods
     delete() – deletes the marker
     getType() – returns the type
     getAttribute(name) – returns the value of the attribute
     setAttribute(name, value) – sets the value of the attribute
     setAttributes(String[] attributeNames, Object[] values) – sets the values
      of many attributes


5
                                                                              L0001 - 2010-11-27
Working with Markers


To create a “problem” marker for a complete file, just use the following



         try {
            IFile file = myEditor.getFile();
            IMarker marker = file.createMarker(IMarker.PROBLEM);
            marker.setAttribute(IMarker.MESSAGE, "hello");
         } catch (CoreException e) {
            e.printStackTrace();
         }




6
                                                                          L0001 - 2010-11-27
Lab Exercise


Add a new marker type for your problems
     Use problemmarker and textmarker as super-types

Create markers for all errors at the end of each parse
     Remember to delete old markers

Do they show up in the problems view?

Do you see annotations and squibbles in the editor?




7
                                                         L0001 - 2010-11-27
Outline View


The Outline view shows an outline of domain model of the current editor
     Requires a domain model has been built
     Has dependency on org.eclipse.ui.views

The content of the outline view is supplied by the active editor via adaption
to IContentOutlinePage
     Result should inherit from ContentOutlinePage
     Cache returned object as this method is called often

        private IContentOutlinePage myContentOutlinePage = null;
        @Override
        public Object getAdapter(Class adapter) {
           if (adapter == IContentOutlinePage.class) {
               if (myContentOutlinePage == null) {
                   myContentOutlinePage = new NINEditorOutlinePage(this);
               }
               return myContentOutlinePage;
           }
           return super.getAdapter(adapter);
        }




8
                                                                            L0001 - 2010-11-27
Outline of Outline Page




public class NINEditorOutlinePage extends ContentOutlinePage {
  @Override
  public void createControl(Composite parent) {
     super.createControl(parent);
     final TreeViewer tree = getTreeViewer();
     tree.setLabelProvider(new MyLabelProvider());
     tree.setContentProvider(new MyContentProvider());
     tree.setInput(new Object());
     // Add listener on model, so tree can be refreshed when model is updated
  }
  private class MyLabelProvider extends LabelProvider { … }
  private class MyContentProvider implements ITreeContentProvider { … }
}




9
                                                                                L0001 - 2010-11-27
Outline View Extras


 To get popup menu
      Just install it in the tree – remember to register it

 To synchronize view with editor navigation
      Add navigation tracker in the editor and let the view listen

 To synchronize editor with selection in view
      Add selection listener in editor
      If current selection is a domain object of the editor, move to that
       position
        
            Use ITextViewer.revealRange(int offset, int length)

 To add filtering and sorting to view
      Extend ContentOutlinePage.setActionBars(IActionBars)




10
                                                                             L0001 - 2010-11-27
Lab Exercise


 Extend editor with support for outline view

 Synchronize the editor with the current selection in the view




11
                                                                 L0001 - 2010-11-27
Properties View


 The Properties view shows properties of the current selection
      Requires a domain model as been built in editor
      Has dependency on org.eclipse.ui.views

 A property source (IPropertySource) describes how the property view should
 show the properties of an object

 The content of the property view is supplied by the current selection via
 inheritance from or adaption to IPropertySource
      Inherits from IPropertySource
      Implements IAdaptable.getAdapter(IPropertySource.class)
        
            Can be accomplished via adapter factory




12
                                                                             L0001 - 2010-11-27
Implementation of Property Sources (IPropertySource)


 A property source describes the supported properties using descriptors
 (IPropertyDescriptor)
      A descriptor includes information about
        
            name, description, help
        
            optionally a label provider, how to create a property editor
        
            If it can create a property editor, it is settable
      The platform includes a number of standard descriptors
        
            PropertyDescriptor – read-only property
        
            TextPropertyDescriptor – text based property
        
            ColorPropertyDescriptor – color property
        
            ComboBoxPropertyDescriptor – list based property

 A property source can get and possibly set and reset property values




13
                                                                           L0001 - 2010-11-27
Interesting Parts of Property Source

public class ExPropertySource implements IPropertySource {
  … myObject;
  public IPropertyDescriptor[] getPropertyDescriptors() {
     return IPropertyDescriptor[] = { new TextPropertyDescriptor("name", "name") };
  }
  public Object getPropertyValue(Object id) {
     if ("name".equals(id)) {
         return myObject.getName();
     } else {
         return null;
     }
  }
  public void setPropertyValue(Object id, Object value) {
     if ("name".equals(id)) {
         myObject.setName((String) value);
     }
  }
}




14
                                                                                      L0001 - 2010-11-27
Lab Exercise


 Extend editor with support for properties view

 Add support for setting the name in the domain model
      Use IDocument.replace(offset, length, text)




15
                                                        L0001 - 2010-11-27
More Information


 “Mark My Words: Using markers to tell users about problems and tasks”
      http://www.eclipse.org/resources/resource.php?id=237
      
          Somewhat basic article on markers

 “Take control of your properties”
      http://www.eclipse.org/resources/resource.php?id=214
      
          Good introduction with plenty of code examples

 “The Eclipse Tabbed Properties View”
      http://www.eclipse.org/resources/resource.php?id=138
      
          Introduction to the new tabbed properties view




16
                                                                         L0001 - 2010-11-27

More Related Content

KEY
L0036 - Creating Views and Editors
KEY
L0020 - The Basic RCP Application
KEY
L0018 - SWT - The Standard Widget Toolkit
KEY
L0033 - JFace
PPTX
PDF
S313937 cdi dochez
PPTX
Java Swing
L0036 - Creating Views and Editors
L0020 - The Basic RCP Application
L0018 - SWT - The Standard Widget Toolkit
L0033 - JFace
S313937 cdi dochez
Java Swing

What's hot (20)

PPT
Introdu.awt
PPTX
Chapter 1 swings
PDF
Z blue introduction to gui (39023299)
PPT
Java Swing
PPT
EclipseCon 2005: Everything You Always Wanted to do with EMF (But were Afraid...
PPT
Eclipse Training - Standard Extension Points and APIs
PPT
java swing
PDF
Lab3-Android
PPT
Basic using of Swing in Java
PPTX
Java swing
PPT
Swing and Graphical User Interface in Java
PPT
introduction of Java beans
PPT
Bean Intro
PPTX
Complete java swing
PPTX
Swings in java
PPT
Graphical User Interface (GUI) - 1
PPTX
Unit iv
PPTX
Java Beans
PDF
javabeans
Introdu.awt
Chapter 1 swings
Z blue introduction to gui (39023299)
Java Swing
EclipseCon 2005: Everything You Always Wanted to do with EMF (But were Afraid...
Eclipse Training - Standard Extension Points and APIs
java swing
Lab3-Android
Basic using of Swing in Java
Java swing
Swing and Graphical User Interface in Java
introduction of Java beans
Bean Intro
Complete java swing
Swings in java
Graphical User Interface (GUI) - 1
Unit iv
Java Beans
javabeans
Ad

Similar to L0043 - Interfacing to Eclipse Standard Views (20)

PPTX
react-slides.pptx
PPTX
react-slidlkjfl;kj;dlkjopidfjhopijgpoerjpofjiwoepifjopweifjepoies.pptx
PPTX
TRAINING pptt efwoiefo weoifjoiewjfoifjow.pptx
PDF
react-slides.pdf
PDF
react-slides.pdf gives information about react library
PPT
Software Design Patterns
PPTX
Swift Tableview iOS App Development
PPTX
Object-oriented programming
PDF
Jetpack, with new features in 2021 GDG Georgetown IO Extended
PDF
Ad103 - Have it Your Way: Extending IBM Lotus Domino Designer
PDF
Joel Landis Net Portfolio
PDF
Advance RCP
PPTX
Code camp 2011 Getting Started with IOS, Una Daly
PPTX
A brief overview of java frameworks
PPTX
OOPS IN PHP.pptx
DOC
EMF Tips n Tricks
PPTX
-Kotlin_Camp_Unit2.pptx
PPTX
-Kotlin Camp Unit2.pptx
PDF
Intro to iOS Development • Made by Many
PPTX
Context and Dependency Injection 2.0
react-slides.pptx
react-slidlkjfl;kj;dlkjopidfjhopijgpoerjpofjiwoepifjopweifjepoies.pptx
TRAINING pptt efwoiefo weoifjoiewjfoifjow.pptx
react-slides.pdf
react-slides.pdf gives information about react library
Software Design Patterns
Swift Tableview iOS App Development
Object-oriented programming
Jetpack, with new features in 2021 GDG Georgetown IO Extended
Ad103 - Have it Your Way: Extending IBM Lotus Domino Designer
Joel Landis Net Portfolio
Advance RCP
Code camp 2011 Getting Started with IOS, Una Daly
A brief overview of java frameworks
OOPS IN PHP.pptx
EMF Tips n Tricks
-Kotlin_Camp_Unit2.pptx
-Kotlin Camp Unit2.pptx
Intro to iOS Development • Made by Many
Context and Dependency Injection 2.0
Ad

More from Tonny Madsen (20)

PPT
L0037 - Basic Eclipse Configuration
KEY
L0016 - The Structure of an Eclipse Plug-in
KEY
L0001 - The Terminology of the Eclipse Platform
KEY
EclipseCon '11 - Using Adapters to Handle Menus and Handlers in Large Scale A...
KEY
PROSA - Eclipse Is Just What?
PPT
Eclipse Demo Camp 2010 - Eclipse e4 – The Status and the Future
PPT
Eclipse Demo Camp 2010 - UI Bindings - An Introduction
PPT
ITU - MDD – Model-to-Model Transformations
PPT
IDA - Eclipse Workshop II (In Danish)
PPT
IDA - Eclipse Workshop I (In Danish)
PPT
IDA - Fra forretningside til bundlinie: Eclipse følger dig hele vejen (In Dan...
PPT
ITU - MDD - EMF
PPT
ITU - MDD - Eclipse Plug-ins
PPT
ITU - MDD - XText
PPT
eclipse.dk - Eclipse RCP Under the Hood
PPT
EclipseCon '08 - BoF - Building a local Eclipse user group
PPT
Eclipse Summit Europe '08 - Implementing Screen Flows in Eclipse RCP Applicat...
PPT
EclipseCon '09 - The Happy Marriage of EMF, Data binding, UI Forms and Field ...
PPT
javagruppen.dk - e4, the next generation Eclipse platform
PPT
ITU - MDD – Modeling Techniques
L0037 - Basic Eclipse Configuration
L0016 - The Structure of an Eclipse Plug-in
L0001 - The Terminology of the Eclipse Platform
EclipseCon '11 - Using Adapters to Handle Menus and Handlers in Large Scale A...
PROSA - Eclipse Is Just What?
Eclipse Demo Camp 2010 - Eclipse e4 – The Status and the Future
Eclipse Demo Camp 2010 - UI Bindings - An Introduction
ITU - MDD – Model-to-Model Transformations
IDA - Eclipse Workshop II (In Danish)
IDA - Eclipse Workshop I (In Danish)
IDA - Fra forretningside til bundlinie: Eclipse følger dig hele vejen (In Dan...
ITU - MDD - EMF
ITU - MDD - Eclipse Plug-ins
ITU - MDD - XText
eclipse.dk - Eclipse RCP Under the Hood
EclipseCon '08 - BoF - Building a local Eclipse user group
Eclipse Summit Europe '08 - Implementing Screen Flows in Eclipse RCP Applicat...
EclipseCon '09 - The Happy Marriage of EMF, Data binding, UI Forms and Field ...
javagruppen.dk - e4, the next generation Eclipse platform
ITU - MDD – Modeling Techniques

Recently uploaded (20)

PPTX
Microbial diseases, their pathogenesis and prophylaxis
PDF
Classroom Observation Tools for Teachers
PDF
01-Introduction-to-Information-Management.pdf
PPTX
Pharma ospi slides which help in ospi learning
PPTX
Final Presentation General Medicine 03-08-2024.pptx
PDF
Mark Klimek Lecture Notes_240423 revision books _173037.pdf
PPTX
master seminar digital applications in india
PPTX
Institutional Correction lecture only . . .
PDF
Anesthesia in Laparoscopic Surgery in India
PDF
Business Ethics Teaching Materials for college
PDF
Microbial disease of the cardiovascular and lymphatic systems
PPTX
human mycosis Human fungal infections are called human mycosis..pptx
PDF
FourierSeries-QuestionsWithAnswers(Part-A).pdf
PDF
2.FourierTransform-ShortQuestionswithAnswers.pdf
PDF
RMMM.pdf make it easy to upload and study
PDF
Saundersa Comprehensive Review for the NCLEX-RN Examination.pdf
PPTX
school management -TNTEU- B.Ed., Semester II Unit 1.pptx
PPTX
Introduction to Child Health Nursing – Unit I | Child Health Nursing I | B.Sc...
PDF
Module 4: Burden of Disease Tutorial Slides S2 2025
PDF
Pre independence Education in Inndia.pdf
Microbial diseases, their pathogenesis and prophylaxis
Classroom Observation Tools for Teachers
01-Introduction-to-Information-Management.pdf
Pharma ospi slides which help in ospi learning
Final Presentation General Medicine 03-08-2024.pptx
Mark Klimek Lecture Notes_240423 revision books _173037.pdf
master seminar digital applications in india
Institutional Correction lecture only . . .
Anesthesia in Laparoscopic Surgery in India
Business Ethics Teaching Materials for college
Microbial disease of the cardiovascular and lymphatic systems
human mycosis Human fungal infections are called human mycosis..pptx
FourierSeries-QuestionsWithAnswers(Part-A).pdf
2.FourierTransform-ShortQuestionswithAnswers.pdf
RMMM.pdf make it easy to upload and study
Saundersa Comprehensive Review for the NCLEX-RN Examination.pdf
school management -TNTEU- B.Ed., Semester II Unit 1.pptx
Introduction to Child Health Nursing – Unit I | Child Health Nursing I | B.Sc...
Module 4: Burden of Disease Tutorial Slides S2 2025
Pre independence Education in Inndia.pdf

L0043 - Interfacing to Eclipse Standard Views

  • 1. Interfacing to Eclipse Standard Views Eclipse contains a large number of standard views that can be extended to support new languages or data models. This model focus on the interface to the most common Eclipse views: Problems View, Outline View, and the Properties View. Redistribution and other use of this material requires written permission from The RCP Company. L0001 - 2010-11-27
  • 2. Problems View The problems view is used to show resource markers, which can represent anything(!), but normally are error conditions Markers are installed on resources (IResource)  The file of an editor is found via the editor input (IEditorInput) via adaption IFile res = (IFile)editor.getEditorInput().getAdapter(IFile.class);  This only works for files in the workspace – not files opened via “File”→”Open File…” – for the later the above construct returns null 2 L0001 - 2010-11-27
  • 3. Markers (IMarker) Markers are associated as detail data on resources (IResource) Markers have a type, an unique ID (per resource) and a set of text attributes New marker types are defined with the org.eclipse.core.resources.markers extension point  Each marker type has a name, a set of super-marker-types, a persistence and a set of attributes  The resulting new marker type will inherit all attributes from super-markertypes Only persistent markers are saved between invocations  A new marker type is non-persistent unless explicitly set Basic marker types related to problems  org.eclipse.core.resources.problemmarker – with attributes severity, message, and location  org.eclipse.core.resources.textmarker – with attributes charStart, charEnd, lineNumber All relevant marker related constants are defined in IMarker Makers can be grouped in the Problems View via support in the org.eclipse.ui.ide.markerSupport extension point 3 L0001 - 2010-11-27
  • 4. Creating a new Marker Type The extension for a new marker type is special  The id of the new marker type is specified directly in the extension and not in a sub-element (like for views and perspectives)  If no id is specified, the target Eclipse cannot start!!! <extension id="problem" name=“My Personal Problem" point="org.eclipse.core.resources.markers"> <super type="org.eclipse.core.resources.problemmarker" /> </extension> 4 L0001 - 2010-11-27
  • 5. Markers Manipulation Markers are accessed using methods of IResource  createMarker(type) – creates and returns a new marker of the specified type  findMarker(id) – find a specific marker  deleteMarkers(type, includeSubtypes, depth) – deletes all markers of the specified type  …and many more… Markers also has a large set of methods  delete() – deletes the marker  getType() – returns the type  getAttribute(name) – returns the value of the attribute  setAttribute(name, value) – sets the value of the attribute  setAttributes(String[] attributeNames, Object[] values) – sets the values of many attributes 5 L0001 - 2010-11-27
  • 6. Working with Markers To create a “problem” marker for a complete file, just use the following try { IFile file = myEditor.getFile(); IMarker marker = file.createMarker(IMarker.PROBLEM); marker.setAttribute(IMarker.MESSAGE, "hello"); } catch (CoreException e) { e.printStackTrace(); } 6 L0001 - 2010-11-27
  • 7. Lab Exercise Add a new marker type for your problems  Use problemmarker and textmarker as super-types Create markers for all errors at the end of each parse  Remember to delete old markers Do they show up in the problems view? Do you see annotations and squibbles in the editor? 7 L0001 - 2010-11-27
  • 8. Outline View The Outline view shows an outline of domain model of the current editor  Requires a domain model has been built  Has dependency on org.eclipse.ui.views The content of the outline view is supplied by the active editor via adaption to IContentOutlinePage  Result should inherit from ContentOutlinePage  Cache returned object as this method is called often private IContentOutlinePage myContentOutlinePage = null; @Override public Object getAdapter(Class adapter) { if (adapter == IContentOutlinePage.class) { if (myContentOutlinePage == null) { myContentOutlinePage = new NINEditorOutlinePage(this); } return myContentOutlinePage; } return super.getAdapter(adapter); } 8 L0001 - 2010-11-27
  • 9. Outline of Outline Page public class NINEditorOutlinePage extends ContentOutlinePage { @Override public void createControl(Composite parent) { super.createControl(parent); final TreeViewer tree = getTreeViewer(); tree.setLabelProvider(new MyLabelProvider()); tree.setContentProvider(new MyContentProvider()); tree.setInput(new Object()); // Add listener on model, so tree can be refreshed when model is updated } private class MyLabelProvider extends LabelProvider { … } private class MyContentProvider implements ITreeContentProvider { … } } 9 L0001 - 2010-11-27
  • 10. Outline View Extras To get popup menu  Just install it in the tree – remember to register it To synchronize view with editor navigation  Add navigation tracker in the editor and let the view listen To synchronize editor with selection in view  Add selection listener in editor  If current selection is a domain object of the editor, move to that position  Use ITextViewer.revealRange(int offset, int length) To add filtering and sorting to view  Extend ContentOutlinePage.setActionBars(IActionBars) 10 L0001 - 2010-11-27
  • 11. Lab Exercise Extend editor with support for outline view Synchronize the editor with the current selection in the view 11 L0001 - 2010-11-27
  • 12. Properties View The Properties view shows properties of the current selection  Requires a domain model as been built in editor  Has dependency on org.eclipse.ui.views A property source (IPropertySource) describes how the property view should show the properties of an object The content of the property view is supplied by the current selection via inheritance from or adaption to IPropertySource  Inherits from IPropertySource  Implements IAdaptable.getAdapter(IPropertySource.class)  Can be accomplished via adapter factory 12 L0001 - 2010-11-27
  • 13. Implementation of Property Sources (IPropertySource) A property source describes the supported properties using descriptors (IPropertyDescriptor)  A descriptor includes information about  name, description, help  optionally a label provider, how to create a property editor  If it can create a property editor, it is settable  The platform includes a number of standard descriptors  PropertyDescriptor – read-only property  TextPropertyDescriptor – text based property  ColorPropertyDescriptor – color property  ComboBoxPropertyDescriptor – list based property A property source can get and possibly set and reset property values 13 L0001 - 2010-11-27
  • 14. Interesting Parts of Property Source public class ExPropertySource implements IPropertySource { … myObject; public IPropertyDescriptor[] getPropertyDescriptors() { return IPropertyDescriptor[] = { new TextPropertyDescriptor("name", "name") }; } public Object getPropertyValue(Object id) { if ("name".equals(id)) { return myObject.getName(); } else { return null; } } public void setPropertyValue(Object id, Object value) { if ("name".equals(id)) { myObject.setName((String) value); } } } 14 L0001 - 2010-11-27
  • 15. Lab Exercise Extend editor with support for properties view Add support for setting the name in the domain model  Use IDocument.replace(offset, length, text) 15 L0001 - 2010-11-27
  • 16. More Information “Mark My Words: Using markers to tell users about problems and tasks”  http://www.eclipse.org/resources/resource.php?id=237  Somewhat basic article on markers “Take control of your properties”  http://www.eclipse.org/resources/resource.php?id=214  Good introduction with plenty of code examples “The Eclipse Tabbed Properties View”  http://www.eclipse.org/resources/resource.php?id=138  Introduction to the new tabbed properties view 16 L0001 - 2010-11-27

Editor's Notes

  • #2: \n
  • #3: \n
  • #4: \n
  • #5: \n
  • #6: \n
  • #7: \n
  • #8: Now it&amp;#x2019;s time for the lab.\n
  • #9: \n
  • #10: \n
  • #11: \n
  • #12: Now it&amp;#x2019;s time for the lab.\n
  • #13: \n
  • #14: ColumnLabelProviders &amp;#x2013; as described in module L0011 &amp;#x201C;Contributing to the Eclipse User Interface&amp;#x201D; &amp;#x2013; can be used. (3.3 edition)\n
  • #15: \n
  • #16: Now it&amp;#x2019;s time for the lab.\n
  • #17: \n