Completely changed the structure and switched to Eclipse Plugin.
[Mograsim.git] / net.mograsim.plugin.core / src / net / mograsim / plugin / asm / editor / AsmHoverProvider.java
diff --git a/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/editor/AsmHoverProvider.java b/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/editor/AsmHoverProvider.java
new file mode 100644 (file)
index 0000000..50ab95c
--- /dev/null
@@ -0,0 +1,44 @@
+package net.mograsim.plugin.asm.editor;
+
+import org.eclipse.core.resources.IProjectNatureDescriptor;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.jface.text.IRegion;
+import org.eclipse.jface.text.ITextHover;
+import org.eclipse.jface.text.ITextViewer;
+import org.eclipse.jface.text.Region;
+
+public class AsmHoverProvider implements ITextHover
+{
+
+       @Override
+       public String getHoverInfo(ITextViewer textViewer, IRegion hoverRegion)
+       {
+               // TODO this is logic for .project file to show nature description on hover.
+               // Replace with your language logic!
+               String contents = textViewer.getDocument().get();
+               int offset = hoverRegion.getOffset();
+               int endIndex = contents.indexOf("</nature>", offset);
+               if (endIndex == -1)
+                       return "";
+               int startIndex = contents.substring(0, offset).lastIndexOf("<nature>");
+               if (startIndex == -1)
+                       return "";
+               String selection = contents.substring(startIndex + "<nature>".length(), endIndex);
+
+               IWorkspace workspace = ResourcesPlugin.getWorkspace();
+               IProjectNatureDescriptor[] natureDescriptors = workspace.getNatureDescriptors();
+               for (int i = 0; i < natureDescriptors.length; i++)
+               {
+                       if (natureDescriptors[i].getNatureId().equals(selection))
+                               return natureDescriptors[i].getLabel();
+               }
+               return "";
+       }
+
+       @Override
+       public IRegion getHoverRegion(ITextViewer textViewer, int offset)
+       {
+               return new Region(offset, 0);
+       }
+}
\ No newline at end of file