Eclipse Sleak может отслеживать распределения, сделанные SWT - код здесь .
Однако для этого требуется, чтобы SWT Display
был создан с объектом DeviceData
, позволяющим отслеживать. Стандарт E4Application
этого не делает.
Таким образом, чтобы использовать это, вам нужно использовать собственный класс приложения, расширяющий E4Application - что-то вроде:
import org.eclipse.e4.ui.internal.workbench.swt.E4Application;
import org.eclipse.swt.graphics.DeviceData;
import org.eclipse.swt.widgets.Display;
public class MyApplication extends E4Application
{
/** Enable tracking */
private static final boolean TRACKING = true;
/** Enable debug */
private static final boolean DEBUG = false;
public MyApplication()
{
super();
}
@Override
public Display getApplicationDisplay()
{
Display current = Display.getCurrent();
if (current == null)
{
if (TRACKING || DEBUG)
{
DeviceData data = new DeviceData();
data.tracking = TRACKING;
data.debug = DEBUG;
current = new Display(data);
if (data.tracking)
{
Sleak sleak = new Sleak();
sleak.open();
}
}
else
{
current = new Display();
}
}
return super.getApplicationDisplay();
}
}
Вам нужно будет объявить этоПриложение в файле plugin.xml:
<extension
id="application"
name="Application name"
point="org.eclipse.core.runtime.applications">
<application
cardinality="singleton-global"
thread="main"
visible="true">
<run
class="your.package.MyApplication">
</run>
</application>
</extension>
Измените объявление продукта в файле plugin.xml, чтобы использовать это приложение вместо org.eclipse.e4.ui.workbench.swt.E4Application
. Итак, что-то вроде:
<extension
id="product"
point="org.eclipse.core.runtime.products">
<product
name="%product.name"
application="my.plugin.application">
В качестве еще одного примера ниже приводится часть проверенного рабочего plugin.xml от одного из моих RCP R4:
<plugin>
<extension
id="application"
name="%app.name"
point="org.eclipse.core.runtime.applications">
<application
cardinality="singleton-global"
thread="main"
visible="true">
<run
class="greg.music.e4.rcp.MusicApplication">
</run>
</application>
</extension>
<extension
id="product"
point="org.eclipse.core.runtime.products">
<product
name="%product.name"
application="greg.music.e4.rcp.application">
...... properties
</product>
</extension>
Это в плагинес идентификатором greg.music.e4.rcp
. Это определяет приложение с идентификатором greg.music.e4.rcp.application
и продукт с идентификатором greg.music.e4.rcp.product