JavaFX Scene Builder 1.1(DP) - Controllerクラスを書く場所

GUIで操作できるツール作りたいなーとJavaFX調べてみたら、"JavaFX Scene Builder"なるものがあることを知った。
GUIのデザインを簡単にできるツールですね。

SceneBuilderとEclipseでJavaFX2.1のサンプル作成 - funakkyの日記
ここを参考にやってみよーとしてたら、Controllerクラスを書く場所がない!!

なんと1.1からDocumentというプロパティがなくなっているっぽい。

公式HELPをチラッと眺めてみると、こんな画像を見つけた。
http://docs.oracle.com/javafx/scenebuilder/1/user_guide/img/anchorpane-codepanel.gif

あ、AnchorPaneに書くのね。


AnchorPaneにControllerクラスを書いて、Buttonの"On Action"に"#writeText"メソッドを指定したら、うまく動いた。



JavaFX、簡単ですねー!!

List.jsの使い方

List.jsなるJavascriptライブラリがスゴイ!みたいな記事を見て、ちょっと感動し使ってみることにした。

しかし公式の説明を読んでもピンと来ない。
なぜなら私はhtmlやcssを書くことはできるが、しっかり理解できていなかったからだった。
そんな私がいきなりJqueryを使ったList.jsなど頭に入ってくるわけがない。

ということで、取り敢えず「Javascript 入門」と「Jquery」と「CSS 入門」をググり、なんとなく掴んでから再度List.jsへ挑んだ。
JavascriptCSSJqueryについてはSlideShareなどでまとめている人がいて、かなり理解しやすかった。

ここでは、そんな入門者がList.jsについて理解できるようにList.jsの使い方を書いていく。

今回紹介するList.jsを使ったリスト操作

  1. ソート
  2. 検索
  3. フィルタ
  4. 追加
  5. 編集
  6. 削除

ここで紹介した例は、githubで公開したので、全体をみたい場合はそちらを参照されたし。
clashm45/listjs_example · GitHub

続きを読む

追記 - 独自ライブラリを参照する

[独自ライブラリを参照する]
http://d.hatena.ne.jp/clash_m45/20120620/1340202798
sbtからは何もせずとも参照されるんだけど、コメントして頂いた通りIDEA側はsbtの"gen-idea"を手動で実行しないと参照されない、と。

つまり、独自ライブラリを参照したい場合は、

  1. $PROJECT_DIR$/lib を作成して参照したいライブラリJarを配置する。
  2. コンソールから"sbt gen-idea"を実行する
  3. projectをreloadする。(IDEAがreloadするか聞いてくる)

前提条件:

一応(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 設定エレメント

  1. addClasspath
  2. classpathLayoutType
  3. classpathPrefix
  4. customClasspathLayout
  5. mainClass


ひとつずつ説明していきます。

続きを読む

Mavenで作るJarのファイル名を変更する

MavenでJarを作ると以下フォーマットで名前が作られる。
[artifactId]-[version].jar

例えば、
com.hello
hello
1.0-SNAPSHOT
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

では、mavenarchetype: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は使える!!