11
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

クリップボードの中身を整形するツールをあえてJavaで作ってみた

Last updated at Posted at 2015-04-17

はじめに

jsonをフォーマットするとか、XMLをフォーマットするとかテキストエディタで整形するのめんどくさすぎます。だるすぎます。
SQLを整形するのに別のツールを起動するなんて嫌です。

そこでコピーしたテキストの中身を整形して、クリップボードの中身を入れ替えてくれるツールがあればいいなーと思いましてJavaでツールを作ってみました。

ツールはexe,msi,dmg,app,rpmで提供されますが、それらの中にjreが入るのでサイズが大きくなるのと、jreを二次配布してよいのかがわからなかったので作り方を書いておきます。

Javaが入っている方はjar版も置いておきましたので、こちらをご利用ください。

きっかけはjavafx-maven-pluginを知って使うチャンスを狙っていただけなのです。なのでソースは雑です。。javafx-maven-pluginについては最後に簡単にまとめてありますのでそちらもどうぞ。

何ができるの?

3stepでクリップボードの中身を整形してくれます。

  1. クリップボードに整形したい文字列をコピーする。
  2. exeを実行する(macであればapp)
  3. 貼り付ける。

exeの実行をランチャーやショートカットキーに登録しておくと非常に便利です。

対応するフォーマット

  • json(コピーした文字列の先頭が { であることで判別しています)
{"abc":"def", "hoge":1,"foo":"f oo"}

{
    "abc":"def",
    "hoge":1,
    "foo":"f oo"
}
  • json array(コピーした文字列の先頭が [ であることで判別してます)
[ "aaaa", "bbbbb", "cc ccc" ]

[
    "aaaa",
    "bbbbb",
    "cc ccc"
]
  • xml(コピーした文字列の先頭が < であることで判別しています)
<abc><foo><a>hoge hoge</a><b>asdfghjk</b><c>123456789</c></foo></abc>

<abc>
    <foo>
        <a>hoge hoge</a>
        <b>asdfghjk</b>
        <c>123456789</c>
    </foo>
</abc>
  • sql(ddlは対象外)(コピーした文字列の先頭がselect,insert,update,deleteであることで判別しています。
SELECT a,b,c,d FROM (SELECT * FROM e) WHERE a='aaa' AND b='bbb'


    SELECT
        a,
        b,
        c,
        d 
    FROM
        (SELECT
            * 
        FROM
            e) 
    WHERE
        a='aaa' 
        AND b='bbb'

ツールの作り方

概略

  • ソースは勢いOnlyで書いたので非常に手抜きですんであんまり見ないでください。
  • jsonのparserはjavax.json(glassfish),xmlは標準のAPI,sqlはhibernateのライブラリを利用しています。

作り方

1.githubからソースを取得

git clone https://github.com/uzresk/prettyprintclip.git

2.(exe,msiを作る場合)3rd-partyのライブラリをインストール

3.java(jre,sdk)をインストール

このとき、jreとsdkのディレクトリは同一ディレクトリじゃないとダメです。
javafx-maven-pluginがtools.jarを見に行く時にjava_home/../lib/tools.jarというパスを見に行くためです。

4.mavenをインストール

ぐぐってください。java_homeの設定をお忘れなく。

5.実行ファイルを作成します。

mvn clean jfx:native

6.完成

下記について動作確認済です。
windows 32bit/64bit msi, exe
mac 64bit pkg,app

javafx-maven-plugin

javafx maven pluginといいつつあんまりfxは関係ありません。
javaをmavenでパッケージングするというとmaven-assembly-pluginなんかが思い浮かびますが、このプラグインを使うと、pkg,app,rpm,msi,exeファイルが作れるスグレモノです。
mavenの設定はこれだけ。

                        <plugin>
                          <groupId>com.zenjava</groupId>
                          <artifactId>javafx-maven-plugin</artifactId>
                          <version>8.1.2</version>
                          <configuration>
                            <mainClass>prettyprint.Main</mainClass>
                            <vendor>uzresk</vendor>
                          </configuration>
                        </plugin>

mvn jfx:nativeすることで環境に合わせたパッケージが生成されます。
macならdmg,app,windowsならmsi,exeという具合です。

参考

ちなみに本サイトのJavaFX Quickstart Projectでgenerate the projectしたときに生成されるpomですが、java8だと動きません。
pomの2.0となっている部分を8.1.2に変更することで動きます。

11
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?