複数のビューが開ける

Eclipse RCPのブラウザサンプルで、ビューが複数開けるのがなんでだろー
と思ってよく見ると、plugin.xmlのviewにallowMulipleとかいう属性が追加(前から?)されてるではありませんか。

<view
        id="org.eclipse.ui.examples.rcp.browser.browserView"
        name="%views.browser.name"
        icon="icons/eclipse.gif"
        class="org.eclipse.ui.examples.rcp.browser.BrowserView"
        category="org.eclipse.ui.examples.rcp.browser"
        allowMultiple="true"/>

開くコードはこんなのみたい。

window.getActivePage().showView(BrowserApp.BROWSER_VIEW_ID, secondaryId, IWorkbenchPage.VIEW_ACTIVATE);

ビューとエディタの区別がだんだんなくなってくる。。。

Java読書会

http://www.javareading.com/bof/


先週(7/31)行った。
UMLだよUML
モデリングの出来は熟練モデラーしか測れないものか。
ちゃんと実装コードまで落とせるかどうかはどうやって判断するんだろー。


初対面のMLなどでよく名前を見かける人がちらほら。
オレンジニュース( http://secure.ddo.jp/~kaku/tdiary/ )の人もいた。
どっちかというと読書より打ち上げの方が面白かったりして。

Hibernate Synchronizer

http://www.binamics.com/hibernatesync/


けっこう使えますぜ。うちのEclipse3でも動いてます。
以下の記事が簡単なチュートリアル


Working with Hibernate in Eclipse
http://www.onjava.com/pub/a/onjava/2004/06/23/hibernate.html


既存のDB→hbm→Javaクラスというボトムアップな開発が可能。
しかしhbmをschemaExportでDBに戻すと元のスキーマと変わっちゃう場合あり(泣)
CHARのカラムとか復元できるんだろうか。

IAdaptableの用途

http://d.hatena.ne.jp/muimy/20040803#1091537308
のつづき

objectContributionのアクションで、adaptable="true" して、

<objectContribution 
      objectClass="org.eclipse.core.resources.IContainer"
      id="com.muimi.puchi.objectContribution2"
      adaptable="true" >

   <action 
         label="Explorer"
         class="com.muimi.puchi.OpenExplorerAction"
         id="com.muimi.puchi.OpenExplorerAction"
         menubarPath="additions" />

</objectContribution>


うけとる側で getAdapter() すると、Javaフラグメントでも IResourceになっちゃったりして便利。

public class OpenExplorerAction implements IObjectActionDelegate{

    private ISelection selection;

    public void setActivePart(IAction action, IWorkbenchPart targetPart) {
    }

    public void run(IAction action) {
        
        IContainer container = (IContainer) ( (IAdaptable) (  (IStructuredSelection)selection).getFirstElement() ).getAdapter(IResource.class);

        String location = container.getLocation().toOSString();
        
        try {
            Runtime.getRuntime().exec(
                    MessageFormat.format("explorer.exe {0}", new String[]{location})
            );
        } catch (IOException e) {
            PuchiToolsPlugin.logError("error in launch. dir=" + location ,e);
        }
    }


    public void selectionChanged(IAction action, ISelection selection) {
        this.selection = selection;
    }

}

なお、Explorer開くコードのは、EasyExplorerのパクリです。