新規エディタを作成する方法です。
plugin.xmlにエクステンションとして登録します。
<extension point="org.eclipse.ui.editors"> <editor ... /> </extension>
エディタを定義します。
<editor
name="Lrd Editor"
extensions="lrd"
icon="icons/lrd_obj.png"
class="org.limy.eclipse.lrd.editor.LrdEditor"
id="org.limy.eclipse.lrd.editor.LrdEditor">
エディタに付けるID
エディタ名
エディタに関連付けるアイコンイメージ
エディタに関連付けるファイルの拡張子を、カンマで区切って記述します。
エディタのクラス名を指定します。org.eclipse.ui.IEditorPart を実装しているクラスである必要があります。
command / launcher の属性とは同時に使用できません。
外部のエディタプログラムを使用する場合に使います。
プログラム名を指定します。ここで指定したプログラムはパスの通ったディレクトリか
プラグインディレクトリ内に配置してある必要があります。
class / launcher の属性とは同時に使用できません。
ランチャのクラス名を指定します。org.eclipse.ui.IEditorLauncher を実装しているクラスである必要があります。
前述の command と使い方は似ていますが、こちらはより柔軟な使い方が出来ます。
例えば、開くファイルによって外部プログラムに渡すパラメータを変化させたりすることも可能です。
ファイルを開くと、メソッド open が呼び出されます。
public void open(IPath file)
開こうとしたファイルが引数として与えられるので、この値を利用して
外部プログラムを開いたり、他にも色々な処理を記述することが出来ます。
class / command の属性とは同時に使用できません。
contributorクラス名を指定します。org.eclipse.ui.IEditorActionBarContributor を実装しているクラスである必要があります。
参考記事 : retargetを使う
true に指定すると、このエディタをデフォルトエディタにします。
1つのファイルに2つ以上のエディタが関連付けられている時に意味を持ちます。
エディタに関連付けるファイル名を、カンマで区切って記述します。
特に指定しない限り、extensions で指定された拡張子のファイル全てが関連付けられます。
シンボリックフォント名を指定します。
詳しい使い方は不明です。
エディタを表すJavaクラスを生成します。org.eclipse.ui.editors.text.TextEditor のサブクラスにします。
このクラスは抽象クラスではないので、そのままでも利用できます。
いくつかカスタマイズ方法を挙げてみます。
createPartControlメソッドをオーバーライドします。
public void createPartControl(Composite parent) {
super.createPartControl(parent);
getSourceViewer().getTextWidget().setBackground(color);
}
protected void editorContextMenuAboutToShow(IMenuManager menu) {
super.editorContextMenuAboutToShow(menu);
menu.add(new Separator());
menu.add(new AllBuildAction("&All Build"));
menu.add(new OpenExternalBrowserAction("&Browse"));
}
IContributionItem または IAction を実装したインスタンスを指定します。
例えば、エディタ内の色付けなどをPreferenceページでカスタマイズできるような
作りにしている場合、設定を変更してもその設定はすぐには反映されません。
これを反映させるには、Editorクラスで以下のメソッドをオーバーライドします。
protected void doSetInput(IEditorInput input) throws CoreException {
super.doSetInput(input);
setPreferenceStore(LimyEclipsePlugin.getDefault().getPreferenceStore());
}
これにより、Preferenceを変更したときに特定のメソッドが呼ばれるようになります。
次に、このメソッドをオーバーライドします。
protected void handlePreferenceStoreChanged(PropertyChangeEvent event) {
super.handlePreferenceStoreChanged(event);
// LimyEclipseプラグイン固有処理
LimyEclipsePlugin.getDefault().updateProviders();
if (getSourceViewer() instanceof SourceViewer) {
((SourceViewer)getSourceViewer()).unconfigure();
getSourceViewer().configure(new XMLSourceViewerConfiguration());
((SourceViewer)getSourceViewer()).refresh();
}
}
プラグイン固有処理をした後で、SourceViewerクラスのメソッドを
の順で呼び出しています。
|
|