user758795
user758795

Reputation: 449

mark file as active - eclipse plugin

i wrote a plugin for a eclipse that let user creating my own type of project , the template of the project have some configuration files and I want to give the user the option to chose which one will be active, it's mean which one i will use when i will compile the project, i add an action of this files that let the user set it as active, my question is if there is any way to mark it in the package explorer(maybe bold ar with some border) as active so when user look at this he can know which one is the active now

Thanks

Upvotes: 0

Views: 168

Answers (1)

Waqas Ilyas
Waqas Ilyas

Reputation: 3241

You can use the decorator extension point org.eclipse.ui.decorators. Add this to your plugin.xml:

<extension
      point="org.eclipse.ui.decorators">
   <decorator
         adaptable="true"
         class="MyDecoratorClass"
         id="some.id.for.decorator"
         label="Active Build Configuration Decorator"
         lightweight="true"
         location="BOTTOM_RIGHT"
         state="false">
      <enablement>
         <and>
            <objectClass
                  name="org.eclipse.core.resources.IResource">
            </objectClass>
            <or>
               <objectClass
                     name="org.eclipse.core.resources.IProject">
               </objectClass>
               <objectClass
                     name="org.eclipse.core.resources.IFile">
               </objectClass>
            </or>
         </and>
      </enablement>
   </decorator>
</extension>

Provide implementation in your MyDecoratorClass (or whatever name you choose) to check your project's active config and either adding text, or images. Perhaps have something like this: []

Whenever a user makes a modification that requires you to update the decorators so that the latest changes can be decorated you can use this:

// the resource whose properties changed and needs to be re-decorated
IResource resource = ...;

IDecoratorManager manager = PlatformUI.getWorkbench().getDecoratorManager();
IBaseLabelProvider decorator = manager.getBaseLabelProvider("id.of.my.decorator");
if (decorator != null)
    ((ILabelProviderListener) manager).labelProviderChanged(new LabelProviderChangedEvent(decorator, resource));

Upvotes: 1

Related Questions