eclipse-rcp

Commandsでつまる

どうも、eclipse 3.0で クラス内でActionに、 action2.setActionDefinitionId("ccc.com1");という風に、 Commandsを登録しても、表示はされるがキーイベントを拾わないようだ。 なんらかの処理をしないといけないのかもしれない。普通に、pluginで登録すれば…

draw2dのfigureのイベントをスルー

他のFigureにもイベントを渡したい場合は、 単純に、スルー先のFigureのhandleイベント()を呼び出すといいでしょう。 いくつか値は置き換えた方がいい場合もありますが

extension-pointの追加でつまる

どうも、plugin.xmlでのextensionPointの宣言のidは、pluginのidと合わさるの?

debug用 引数

eclipseをdebug用で起動する引数(Java virtualマシンも指定) console -vm "C:\Program Files\Java\jdk1.5.0_03\bin\java" -vmargs -Dorg.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog -Dorg.apache.commons.logging.simplelog.def…

Viewのcloseの取得

前日、disposeのoverwriteという方法を紹介したが、間違ったやりかただった。どうやら、Pageに、IPartListener2を追加して、partClosedを拾う方がいいようだ。 listenerの追加位置は、どこでやるかは、難しいところだが、WorkbenchAdvisorのpostWindowOpenは…

もろもろ

■設定が保存されない。 いろいろ調べた結果 なんと、自分で、 Run workspace Dataの Clear workspace data before launching をcheckしていたようだ。 気をつけよう。 ■ViewPartのcloseを取得? disposeをoverwriteしたら取れた。(他にいい方法ありそうだけど)…

PluginでのPreferenceConverterを使うと?エラー

AbstractUIPluginの拡張クラスのstartメソッド内で、 PreferenceConverter.setDefault等を使うと、エラーになる。 普通の設定ならできるんだけどなー 他が原因か? public void start(BundleContext context) throws Exception {}

draw2dのfigureの最大数は以外と少ない?

どこかで作り方がまずかったのかもしれないけど、500〜1000ぐらいのfigureを描画させてスクロールさせてたら、no more handle というエラーでよく落ちる。 figureの最大数制限とかあるのだろうか? まとめるなら、figureを使う意味ないので難しいところだ。

draw2dメモ

■setSizeはラグが出る。 後で値を参照する場合 setSizeは、syncExecした方がいい。■Mouse UpとDownの処理をFigureでするときには、 UpイベントをFigureで拾わないときがあるのに注意 ドラッグなど これは、Canvasで拾わないといけない。

figureの順番入れ替え?

クリックで一番上のfigureを変更ただし、これをするとクリックの後にDrugイベントに以降できません。 public void mousePressed(MouseEvent me) { Figure figure=(Figure)me.getSource(); IFigure parent=figure.getParent(); //figure.requestFocus(); List…

Fastview

FastView 左下にステータスに収納されるView、表示と非表示を自動で行うPerspectiveなどから追加 layout.addFastView(LibralyView.ID,0.1f);WorkbenchAdvisorで指定が必要 configurer.setShowFastViewBars(true);透過ウインドウの代用かな? ファイルツリーや…

初期の作成でつまる

少したつと作り方忘れてしまうな。(>oplugin.xml 必須 point point="org.eclipse.core.runtime.products" point="org.eclipse.ui.perspectives" point="org.eclipse.core.runtime.applications"

Graphicsクラスに、stringExternがない?

いかな感じで代用 public Point stringExtent(Graphics gc,String label){ int w=gc.getFontMetrics().getAverageCharWidth()*label.length(); int h=gc.getFontMetrics().getHeight(); return new Point(w,h); }

Draw2DをFigureCanvasではなくCanvas使うときは

super(parent,SWT.V_SCROLL|SWT.H_SCROLL|SWT.NO_REDRAW_RESIZE); に注意、resizeしてちらついたりするときはこれです。

SWTの処理をwhileループでまわすときは

if(!getShell().isDisposed()){ getShell().getDisplay().readAndDispatch (); getShell().getDisplay().sleep (); } をいれないと固まる。また、処理速度が速すぎるときは Thread.sleepを入れて調整する必要がある。 try { Thread.sleep(20); } catch (Inte…

workbenchdirの取得

File workbench=new File(Platform.getInstanceLocation().getURL().toString().substring(5));pluginのディレクトリーの取得(こっちは実用性難しい) return new File(Platform.getInstallLocation().getURL().getPath(), "plugins/" +plugin.getBundle().ge…

ホイールで横スクロール

ホイールで横スクロール(立てスクロールが非表示なら万事うまくいく) Focusに注意 //canvas.getVerticalBar().setEnabled(false);//無効にしてもいいみたい canvas.getVerticalBar().addSelectionListener(new ScrollChange()); canvas.setFocus(); } public…

draw2dメモ

panel(figureすべて?)のデフォルトのlayoutmanagerはnull layoutmanagerがnullなら左上に追加した順に描画する。 つまり、最後に追加したFigureが一番上 しかし、nullだとpanelのsizeは大きくしかならない。childrenのFigureをサイズを変更して、親のサイズ…

ScaleFieldEditor

ちょっと手抜きだけど、作ってみました。 public class SliderFieldEditor extends FieldEditor{ private int min; private int max; private int value; private int defaultValue; private Label valueLabel; private Scale scale; public SliderFieldEdit…

現在のビューをアクティブにビューの中から

たまに、コンソール呼んだりすると、コンソールがアクティブになるので PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().activate(this);

Draw2d用のイメージFigure

とっても簡単 public class ImageFigure extends Figure{ Image image; public ImageFigure(Image img){ this.image=img; setSize(image.getBounds().width,image.getBounds().height); } public void paintFigure(Graphics g) { g.drawImage(image,getClien…

よけいなメニューをのぞく

自動で追加されるよけいなメニューを除きにはコメントが一番簡単かな? org.eclipse.ui.editors_3.0.1を入れると、Last Edit Locationというアイテムが追加されます。

System.gc()は重要?

再描画のたびとかで、メモリがやたら増えるなーと思い。dispose漏れでもあるかと思ったが System.gc()呼び出したら大概解決。 呼び出すタイミングは難しいけど