ScalaでEclipse Pluginを書いてみたよ

う ご く w w w http://bit.ly/gy1lJ8

都元ダイスケ🍅 on Twitter: "う ご く w w w http://bit.ly/gy1lJ8"

えーと。id:kompiroさんとネタかぶりですがw 一足先にScalaを試したのでご報告。

普通に動きました。特に難しいことしてません。id:kompiroさんの手順の変法です、で済まそうとしたらちょっと違ったので手順を箇条書きしときます。

package org.jiemamy.eclipse.sample.scala

import org.eclipse.jface.resource.ImageDescriptor
import org.eclipse.ui.plugin.AbstractUIPlugin
import org.osgi.framework.BundleContext

class Activator extends AbstractUIPlugin {

  val PLUGIN_ID = "org.jiemamy.eclipse.sample.scala"

  var plugin:Activator = null
  

  @throws(classOf[Exception])
  override def start(context:BundleContext) {
    super.start(context)
    plugin = this
  }

  @throws(classOf[Exception])
  override def stop(context:BundleContext) {
    plugin = null
    super.stop(context)
  }
}
package org.jiemamy.eclipse.sample.scala.actions

import org.eclipse.jface.action.IAction
import org.eclipse.jface.viewers.ISelection
import org.eclipse.ui.IWorkbenchWindow
import org.eclipse.ui.IWorkbenchWindowActionDelegate
import org.eclipse.jface.dialogs.MessageDialog

class SampleAction extends IWorkbenchWindowActionDelegate {
  
  var window:IWorkbenchWindow = null

  def run(action:IAction) {
    MessageDialog.openInformation(
      window.getShell(),
      "Plugin by Scala",
      "Hello, Eclipse x Scala world")
  }

  def selectionChanged(action:IAction, selection:ISelection) {
  }

  def dispose() {
  }

  def init(window:IWorkbenchWindow) {
    this.window = window;
  }
}

うーん、なんか異様に重い起動だった気がするけど…。原理的にはそんな重いはずないんだけどな〜。

とりあえずまだScala力が全くないので、色々困った感じのScalaコードだとは思いますが、ご愛敬。

*1:何がどこに入ってるか知らないので、とりあえず全部。恐らくscala-compiler.jarとかは要らないんだけど、まぁとりあえず全部だ全部。