Jump to: navigation, search

Difference between revisions of "Talk:FAQ How do I implement Quick Fixes for my own language?"

(New page: I have followed the steps to implement the quickfixes and I've not been able to get it right. Here is what I did: First I added the extension to the plugin.xml file directly: <?xml versi...)
 
 
Line 104: Line 104:
 
}
 
}
 
}
 
}
 
+
FOLLOWING this, I created the class QuickFix:
Following this, I created the class QuickFix:
+
  
 
package quickfixer;
 
package quickfixer;
  
 
import org.eclipse.core.resources.IMarker;
 
import org.eclipse.core.resources.IMarker;
 +
 
import org.eclipse.jface.dialogs.MessageDialog;
 
import org.eclipse.jface.dialogs.MessageDialog;
 +
 
import org.eclipse.ui.IMarkerResolution;
 
import org.eclipse.ui.IMarkerResolution;
  
Line 116: Line 117:
  
 
  String label;
 
  String label;
  QuickFix(String label) {
+
 
 +
  QuickFix(String label)
 +
{
 
      this.label = label;
 
      this.label = label;
 
  }
 
  }
  public String getLabel() {
+
 
 +
  public String getLabel()  
 +
{
 
      return label;
 
      return label;
 
  }
 
  }
 
 
 
public void run(IMarker mk) {
 
public void run(IMarker mk) {
 +
 
MessageDialog.openInformation(null, "QuickFix Demo",
 
MessageDialog.openInformation(null, "QuickFix Demo",
 +
 
        "This quick-fix is not yet implemented");
 
        "This quick-fix is not yet implemented");
  

Latest revision as of 07:42, 13 November 2012

I have followed the steps to implement the quickfixes and I've not been able to get it right. Here is what I did:

First I added the extension to the plugin.xml file directly:

<?xml version="1.0" encoding="UTF-8"?> <?eclipse version="3.4"?> <plugin>

  <extension point="org.eclipse.ui.ide.markerResolution">
  	<markerResolutionGenerator
     markerType="org.eclipse.core.resources.problemmarker"
     class="org.eclipse.escript.quickfix.QuickFixer"/>
  </extension>
  <extension
        point="org.eclipse.ui.commands">
     <category
           name="Sample Category"
           id="QuickFixer.commands.category">
     </category>
     <command
           name="Sample Command"
           categoryId="QuickFixer.commands.category"
           id="QuickFixer.commands.sampleCommand">
     </command>
  </extension>
  <extension
        point="org.eclipse.ui.handlers">
     <handler
           commandId="QuickFixer.commands.sampleCommand"
           class="quickfixer.handlers.SampleHandler">
     </handler>
  </extension>
  <extension
        point="org.eclipse.ui.bindings">
     <key
           commandId="QuickFixer.commands.sampleCommand"
           contextId="org.eclipse.ui.contexts.window"
           sequence="M1+6"
           schemeId="org.eclipse.ui.defaultAcceleratorConfiguration">
     </key>
  </extension>
  <extension
        point="org.eclipse.ui.menus">
     <menuContribution
           locationURI="menu:org.eclipse.ui.main.menu?after=additions">
        <menu
              label="Sample Menu"
              mnemonic="M"
              id="QuickFixer.menus.sampleMenu">
           <command
                 commandId="QuickFixer.commands.sampleCommand"
                 mnemonic="S"
                 id="QuickFixer.menus.sampleCommand">
           </command>
        </menu>
     </menuContribution>
     <menuContribution
           locationURI="toolbar:org.eclipse.ui.main.toolbar?after=additions">
        <toolbar
              id="QuickFixer.toolbars.sampleToolbar">
           <command
                 commandId="QuickFixer.commands.sampleCommand"
                 icon="icons/sample.gif"
                 tooltip="Say hello world"
                 id="QuickFixer.toolbars.sampleCommand">
           </command>
        </toolbar>
     </menuContribution>
  </extension>

</plugin>


THEN i created the class QuickFixer:

package quickfixer;

import org.eclipse.core.resources.IMarker; import org.eclipse.core.runtime.CoreException; import org.eclipse.ui.IMarkerResolution; import org.eclipse.ui.IMarkerResolutionGenerator;


class QuickFixer implements IMarkerResolutionGenerator {


public IMarkerResolution[] getResolutions(IMarker mk) {

try {

Object problem = mk.getAttribute("Whatsup"); return new IMarkerResolution[] { new QuickFix("Fix #1 for "+problem), new QuickFix("Fix #2 for "+problem), }; } catch(CoreException e) { return new IMarkerResolution[0]; } } } FOLLOWING this, I created the class QuickFix:

package quickfixer;

import org.eclipse.core.resources.IMarker;

import org.eclipse.jface.dialogs.MessageDialog;

import org.eclipse.ui.IMarkerResolution;

public class QuickFix implements IMarkerResolution {

String label;

QuickFix(String label)

{

this.label = label; }

public String getLabel() { return label; }

public void run(IMarker mk) {

MessageDialog.openInformation(null, "QuickFix Demo",

"This quick-fix is not yet implemented");


}

}

And when i run the plugin, I don't get any message dialog boxes for the two additional quickfixes and I don't even have the additional quickfixes in the list proposed by the quickfix component