2010-09-30

UiBinderにてCSSの設定をする

ウェブアプリケーションでは、ページのデザインにCSSを利用するのは常識なわけで、UiBinderでも当然利用することができます。

        .important {
            font-weight: bold;
        }

  
基本的な記述方法は上記のようになります。呼び出し方に注意してください。また、設定するCSSはfield属性を設定することで、呼び出しのクラス名を変更することができます。以下は、MyStyleという名前を独自に付けています。

        .important {
            font-weight: bold;
        }

  

CSSの思想はデザインと画面設計を分離させることですから、UIBinderでも従来同様、CSSのスタイル情報を独立させて外部ファイルとして呼び出すことも可能です。src属性を利用します。もちろん、fieldの指定も可能です。



  


2010-09-28

GAEのお勉強に良いサイト~App Engline Code Lab~

GAEについては、本研究室でもジワジワと使っていこうと思っていますが、良いサイトがありますので、、、
このサイトでは、BLOGシステムを作成するという目標のもと、GAE周りの周辺技術の使い方をマスターすることができます。ただし、漠然とコピペして作るだけではまずいです。いろいろ疑問点が出てくると思いますが、これを起点に理解すればいいかなと。うちの研究室でもこれをちょっとやってみようかなと思ったり、、、、個人的には、この教材をGWT化したいなとか、、

2010-09-27

EclipseでSubversionを利用する

Netbeansだけでなく、Eclipseも併用することが増えてきそうなので、とりあえずメモ。なお、この記事を書いているのは、3.6(Heliosを想定)です。

ポイントとして、Subversionを使うには2つのプラグインをインストールする必要があります。
  • SubversiveというSVNクライアント
  • SVNコネクター
Subversiveのインストール
プラグインのインストール方法と同様に、Help -> Install new softwareからインストールします。 URLはEclipseのプラグインサイトです(バージョンに注意)。
http://download.eclipse.org/releases/helios 
です。


  • Subversive SVN Team Provider (Incubation)
  • Subversive SVN JDT Ignore Extensions (Optional)
をインストールします。後者のほうはいらないかもしれません。

SVNコネクターのインストール
SVNコネクターは同様の方法でプラグインを探し出してもいいのですが、上記URLにはありません。一番手っ取り早い方法は、SVNコネクターがない状態からSVNを起動してみます。例えば、SVNレポジトリからImportするというのも手でしょう。



そうすると、SVNコネクターを入れろという画面がでてきます。最新版を選択。



すると、プラグインのインストール画面がでてきますので、いつものようにプラグインをインストールします。JavaHLはインストールしなくてよいようです。




なお、本記事は、下記のサイトを参考にさせていただきました。



2010-09-14

Netbeansでsubversionを利用する

Netbeansは、Subversionに対応しているのだが、クライアントソフトが入っていない。32bit版だと自動的にプラグインをとってきてくれるらしいが(未確認)、64bit版では自分でインストールする必要がある。条件としてコマンドラインで動作するSubversionでなければならず、いちおう、Netbeansが推奨するクライアントソフトがあるが、そこはユーザ登録する必要があるため、なんか面倒。。。

というわけで、ユーザ登録の必要のないSubversionクライアントを探して発見。Slik Subversionというやつだ。64bit版も用意されている。64bitのNetbeansを使ってる人はお試しあれ。

2010-09-10

C++/CLIを辞めるべきか、、、

表題の通り、C++/CLIを辞めるべきか、、、悩んでます。もともとうちの研究室は、MFCで書いていたのですが、昨今、MSが.NETフレームワークに重点を置いている点と、開発効率のしやすさを考え、.NETベースの言語に切り替えようと昨年からジワジワとC++/CLIに移行してきました(お勉強としてはもっと前からやってましたが)。このBLOGでもC++/CLIの記事がいくつかあると思います。そもそもC#ではなくC++/CLIを選んだのは学科の特徴から、C++系のほうがいいかなーという感じだったんですが、先日、VisualStudio2010をインストールして愕然としました。「Intellisenceが働かない」。まさかと思い、ネットをググッてみますと、対応していないという話が続々と出てきました。

Intellisense、、、いわゆるコード補完が働かないというのは、死に近いんじゃないでしょうか? SP1で対応するんじゃないか、、、という話も出てますが、そういうのは待ってられません。2008までは対応しているので、しばらくはそれでごまかしても良いですが、雰囲気的に、「C++/CLIは主流じゃないのでは?」という気がしてきました。また、C++/CLIについてのよくある誤解 というBLOG記事に書いてあるように、C++/CLIはネイティブCとのラッパー的な役割に徹したほうがいいのかなという気がしてきました。

まあきっと、時間が経てば対応するとは思います。ただ、主流ではないのは間違いなく、また言語としてのわかりにくさもあることから、研究室での導入は限定的にするべきかなと思ったりしてます。ただ、研究室での開発言語はなるべく増やしたくないんですよね。学生が対応しきれませんから。。。。難しいところです。

そんなわけで、このBLOGでもC++/CLIは緩やかにフェードアウトしそうな雰囲気です。

GWT:RichTextAreaを利用する

GWTにはリッチテキストエディターが存在するが、実際にこれを使おうとしたらフォントの設定などの処理をおこなういわゆるツールバーの記述をすべて自前で書く必要がある。これは面倒なわけだが、リッチテキスト用のツールバーのライブラリが存在するのでその利用を含めて使い方を紹介する。

RichTextToolBarクラス(GWT ShowCase版)
GWTのShowCaseで動いているリッチテキストエディターがある。これはApache2.0ライセンスで公開されているので、基本的にこれを使えばよい。ただ、各種操作ボタンの画像などもあわせて取ってくる必要がある。

RichTextToolBarクラス(Erik Scholtz版)
Erik Scholtz  氏が公開しているRichTextToolBarクラス。彼のBLOGにて公開している。また同じものが、GoogleCodeにも公開されている。

どちらも使い方は同じで、制御したいRichTextAreaのインスタンスを宣言時にコンストラクタの引数として渡せばオッケイ。
なお両者の違いだが、後者のErikのクラスはアイコン画像ファイルをErikのサイトからダウンロードする形になっています。ソースを見てもらえばわかりますが、アイコンをまとめたファイルを一気にとってきてそれを分割して各ボタンに割り当てています。こっちのほうがダウンロードして即使えるという利点がありますね。

参考までに、UIBinderでの記述例を以下に載せます。

(~.ui.xmlファイル)







サブジェクト
OKCancel

(~.javaファイル)
@UiField
RichTextArea rtext;
@UiField
SimplePanel  tbar;

RichTextToolbar toolBar = new RichTextToolbar(rtext);
tbar.add(toolBar);


このように記述するだけで、ちょっとしたリッチテキストエディターの完成です。


なお、本サイトの掲載内容は、www.keicode.comさんの「書式付入力ボックス ~ RichTextArea の利用」を参考にさせていただきました。

2010-09-07

.NETフレームワークにおける言語間の連携について

マイクロソフトは、.NETフレームワークを採用して以来、提供していた各開発言語を全て.NETフレームワークに対応させている。C++、C#、VBの各言語はネイティブコードではなく、共通した中間コードを出力することになったわけだ。これにより、各言語でライブラリの共通化がはかられ、どの言語においてもほぼ同じ名前のパッケージやクラス、メソッドを呼び出すことになる。

これは自作ライブラリについても同様のことが言えて、他言語で自作したライブラリを容易に呼び出すことができる。従来の.NET以前の言語でも、C++のライブラリをVBで呼び出すことは可能であったが、それとは全く次元の違う手軽さで、連携させることができる。具体的にいえば、一つのソリューションの中に、異なる言語のプロジェクトを混在させ、特別なインタフェースを記述することなく、他言語で呼び出すことができる。
以下、例として、C++のプロジェクトからC#のクラスライブラリを呼び出す方法を紹介する。

C#側
呼び出されるクラスライブラリを作成しておく。特別なことは必要なく、.NETのコンポーネントクラスとして作成しておけばよい。

C++側
.NETのC++、つまりC++/CLIのプロジェクトを作成する。MFCのプロジェクトからは呼び出すことはできないので注意。

以上、2つのプロジェクトを同一のソリューション内で開いておいてください(ソリューションを右クリックして既存のプロジェクトを追加しておく)。

呼び出すC#のプロジェクトを参照に追加する
ここが一番のポイント。C++のプロジェクトを右クリックし、参照を選択する。


 「新しい参照の追加」ボタンをクリック。
 プロジェクトのタブを選択し、呼び出したいC#のプロジェクトを選択し追加。 
以上の設定により、C#で作成したライブラリをC++で呼び出すことができる。

今回、ツイッタークライアントのプログラムをC++/CLIで作成しようとしてサンプルがなく、C#で書かれているサンプルを元に書き直すしかないのか、、、と思っていて結論としてこの方法を採用することにしました。C++/CLI側から全く違和感なく利用できるというのは大変魅力です。本研究室では、MFCとの親和性からC++/CLIを中心言語としていますが、C#をもっとうまく取り入れれば開発効率が上がるかも、、、と感じました。
注意事項
原則として、どのようなクラス(型)でも気にすることなく、C++側で呼び出し可能です。ただし、C#側でrefとかoutといった参照渡しをするようなメソッドがあれば、その呼び出し方は注意が必要です。ここでは書きませんが、C++側での記述にちょっと細工が必要なようです。