JavaFX Scene Builder 1.1(DP) - Controllerクラスを書く場所
GUIで操作できるツール作りたいなーとJavaFX調べてみたら、"JavaFX Scene Builder"なるものがあることを知った。
GUIのデザインを簡単にできるツールですね。
SceneBuilderとEclipseでJavaFX2.1のサンプル作成 - funakkyの日記
ここを参考にやってみよーとしてたら、Controllerクラスを書く場所がない!!
なんと1.1からDocumentというプロパティがなくなっているっぽい。
あ、AnchorPaneに書くのね。
AnchorPaneにControllerクラスを書いて、Buttonの"On Action"に"#writeText"メソッドを指定したら、うまく動いた。
JavaFX、簡単ですねー!!
List.jsの使い方
List.jsなるJavascriptライブラリがスゴイ!みたいな記事を見て、ちょっと感動し使ってみることにした。
しかし公式の説明を読んでもピンと来ない。
なぜなら私はhtmlやcssを書くことはできるが、しっかり理解できていなかったからだった。
そんな私がいきなりJqueryを使ったList.jsなど頭に入ってくるわけがない。
ということで、取り敢えず「Javascript 入門」と「Jquery」と「CSS 入門」をググり、なんとなく掴んでから再度List.jsへ挑んだ。
JavascriptやCSS、JqueryについてはSlideShareなどでまとめている人がいて、かなり理解しやすかった。
ここでは、そんな入門者がList.jsについて理解できるようにList.jsの使い方を書いていく。
今回紹介するList.jsを使ったリスト操作
- ソート
- 検索
- フィルタ
- 追加
- 編集
- 削除
ここで紹介した例は、githubで公開したので、全体をみたい場合はそちらを参照されたし。
clashm45/listjs_example · GitHub
追記 - 独自ライブラリを参照する
[独自ライブラリを参照する]
http://d.hatena.ne.jp/clash_m45/20120620/1340202798
sbtからは何もせずとも参照されるんだけど、コメントして頂いた通りIDEA側はsbtの"gen-idea"を手動で実行しないと参照されない、と。
つまり、独自ライブラリを参照したい場合は、
- $PROJECT_DIR$/lib を作成して参照したいライブラリJarを配置する。
- コンソールから"sbt gen-idea"を実行する
- projectをreloadする。(IDEAがreloadするか聞いてくる)
前提条件:
- projectにsbt Pluginの"sbt-idea"を関連付ける。
一応(READMEに書いてあるけど)関連付け方。
$PROJECT_DIR$/project/plugins.sbt(無かったら作る)に、
addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.0.0")
を記述する。
※ "clean-idea"とか欲しいかもしれない
独自ライブラリを参照する
2012/06/21追記しました。
追記 - 独自ライブラリを参照する - clash_m45の開発日記
sbtでセントラルリポジトリにないライブラリ(例えばoracle jdbcなど)をクラスパスに入れるのに一番簡単な方法は、アンマネージ依存性でできる。
http://scalajp.github.com/sbt-getting-started-guide-ja/library-dependencies/
できるんだけど、IntelliJ IDEAで見てくれなかった。
なにも設定しなくても見てくれていい気がするんだけどなぁ・・・
[How to add Jar libraries to an IntelliJ Idea SBT Scala project?]
http://stackoverflow.com/questions/3796004/how-to-add-jar-libraries-to-an-intellij-idea-sbt-scala-project
Answer : File - Project structure - Libraries
いや・・・うん、まぁそうなんだけどね・・・
※ちゃんとしたやり方があったら教えて下さい。
Maven Jar マニフェスト設定
Maven 3.0の参考サイトがないので書いてゆきます。
まぁ基本的には同じなんだけど。
まずはjar:jarのリファレンスから
http://maven.apache.org/plugins/maven-jar-plugin/jar-mojo.html
org.apache.maven.plugins maven-jar-plugin 2.4 ココにいろいろ設定を書いていきます。
manifestタグには以下のページで詳細に記載されてます。
http://maven.apache.org/shared/maven-archiver/index.html
よく使う manifest 設定エレメント
- addClasspath
- classpathLayoutType
- classpathPrefix
- customClasspathLayout
- mainClass
ひとつずつ説明していきます。
Mavenで作るJarのファイル名を変更する
MavenでJarを作ると以下フォーマットで名前が作られる。
[artifactId]-[version].jar
例えば、
というプロジェクトの場合、mvn packageを行うと、
hello-1.0-SNAPSHOT.jar が作成される。
このJarファイルの名前を変更したい場合は、pom.xmlに少し記述する必要がある。
■pom.xml
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.4</version> <configuration> <finalName>addon-hello</finalName> </configuration> </plugin> </plugins> </build>
これでmvn packageを実行すると、addon-hello.jarが作成される。
詳しくはリファレンスを参照するべし。
http://maven.apache.org/plugins/maven-jar-plugin/jar-mojo.html
MavenでScalaプロジェクト
昔はarchetype:generateゴールに設定をいっぱいつけて、
archetypeCatalogをhttp://scala-tools.org/ってとこを見たりしたりで
ながーーーいコマンドを打つ必要があったみたい。
最近ではセントラルリポジトリにもscala-archetype-simpleのカタログが
入ってて、長いコマンド無しでscalaプロジェクトをはじめることができる。
http://search.maven.org/#search%7Cga%7C1%7Carchetype%20scala
では、mavenのarchetype:generateでscalaプロジェクトの作成の仕方です。
「mvn archetype:generate」実行
ばばーっとセントラルリポジトリにあるカタログ一覧が現時点で603コも出てきて、
”Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): :”と表示されます。
つまり”番号選ぶ or フィルタして。”と言われているので、”scala”と打ってEnterします。
すると、現時点で、10コscala関連のカタログがヒットします。
1: remote -> com.github.igor-petruk.archetypes:maven-archetype-scala-executable (Creates executable Scala Project that is ready to run with 'java -jar') 2: remote -> de.schlichtherle:javafx-scala-demo (An archetype for a standalone JavaFX 2.0 application written in Scala. The generated application is translated from the Colorful Circles demo from the JavaFX 2.0 SDK.) 3: remote -> org.apache.camel.archetypes:camel-archetype-scala (Creates a new Camel project using Scala DSL.) 4: remote -> org.fusesource.scalate.tooling:scalate-archetype-empty (An archetype which creates an empty Scalate web application) 5: remote -> org.fusesource.scalate.tooling:scalate-archetype-guice (An archetype which creates an empty Scalate Guice web application) 6: remote -> org.fusesource.scalate.tooling:scalate-archetype-jersey (An archetype which creates an empty Scalate web application) 7: remote -> org.fusesource.scalate.tooling:scalate-archetype-sitegen (An archetype which creates an empty Scalate static website generation project) 8: remote -> org.scala-tools.archetypes:scala-archetype-simple (The maven-scala-plugin is used for compiling/testing/running/documenting scala code in maven.) 9: remote -> org.wicketstuff.scala:wicket-scala-archetype (-) 10: remote -> org.wicketstuff.scala:wicketstuff-scala-archetype (Basic setup for a project that combines Scala and Wicket, depending on the Wicket-Scala project. Includes an example Specs test.)
あとは、一番シンプルな8番 scala-archetype-simple を選んであげればジェネレートしてくれます。
その後は普通のmvn archetype:generateと同じ。
Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): : 8 Choose org.scala-tools.archetypes:scala-archetype-simple version: 1: 1.0 2: 1.1 3: 1.2 4: 1.3 Choose a number: 4: Define value for property 'groupId': : com.hello Define value for property 'artifactId': : helloworld Define value for property 'version': 1.0-SNAPSHOT: : Define value for property 'package': com.hello: : Confirm properties configuration: groupId: com.hello artifactId: helloworld version: 1.0-SNAPSHOT package: com.hello Y: : Y [INFO] ---------------------------------------------------------------------------- [INFO] Using following parameters for creating project from Archetype: scala-archetype-simple:1.3 [INFO] ---------------------------------------------------------------------------- [INFO] Parameter: groupId, Value: com.hello [INFO] Parameter: artifactId, Value: helloworld [INFO] Parameter: version, Value: 1.0-SNAPSHOT [INFO] Parameter: package, Value: com.hello [INFO] Parameter: packageInPathFormat, Value: com/hello [INFO] Parameter: package, Value: com.hello [INFO] Parameter: version, Value: 1.0-SNAPSHOT [INFO] Parameter: groupId, Value: com.hello [INFO] Parameter: artifactId, Value: helloworld [INFO] project created from Archetype in dir: C:\workspace\helloworld [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 9:55.996s [INFO] Finished at: Thu Jun 14 16:53:31 JST 2012 [INFO] Final Memory: 8M/19M [INFO] ------------------------------------------------------------------------
で、できたプロジェクトは以下のディレクトリ構成になります。
フォルダー パスの一覧 ボリューム シリアル番号は です C:. │ .gitignore │ pom.xml │ └─src ├─main │ └─scala │ └─com │ └─hello │ App.scala │ └─test └─scala └─samples junit.scala scalatest.scala specs.scala
しかも良いことにpom.xmlには既にscalaの設定がされてる。
長いので一部だけ…。
<build> <sourceDirectory>src/main/scala</sourceDirectory> <testSourceDirectory>src/test/scala</testSourceDirectory> <plugins> <plugin> <groupId>org.scala-tools</groupId> <artifactId>maven-scala-plugin</artifactId> <version>2.15.0</version> <executions> <execution> <goals> <goal>compile</goal> <goal>testCompile</goal> </goals> <configuration> <args> <arg>-make:transitive</arg> <arg>-dependencyfile</arg> <arg>${project.build.directory}/.scala_dependencies</arg> </args> </configuration> </execution> </executions> </plugin>
とかね、mavenにはscalaをコンパイルとかするためにmaven-scala-pluginを利用するんだけど、
その設定(mvn compileでscalaコンパイルを動かす設定とか)が書かれてるのでかなり楽チンになった。
mvn compile とか mvn test とかで、最初からscalaを実行してくれます。
ということで、ぐぐると結構古い情報ばっかりだったので、記事にしてみました。
正直sbt(Simple Build Tool)とかgradleとかを調査してたんだけど、両方なんだかまだメンドクサイし、mavenで簡単にできないかなーと思ったら普通に簡単だったので素晴らしいですね。
まだまだmavenは使える!!