Ответ 1
Как упоминалось в одном из ответов, которые вы ссылаетесь на базовый элемент управления StyledText
, имеет метод setLineSpacing
, но существующие редакторы его не используют.
Код стиля CSS
в Eclipse 4.3 предоставляет способ доступа к нему, но для этого требуется написание плагина для расширения CSS.
plugin.xml
для плагина будет выглядеть так:
<plugin>
<extension
point="org.eclipse.e4.ui.css.core.elementProvider">
<provider
class="linespacing.LineSpacingElementProvider">
<widget
class="org.eclipse.swt.custom.StyledText"></widget>
</provider>
</extension>
<extension
point="org.eclipse.e4.ui.css.core.propertyHandler">
<handler
adapter="linespacing.StyledTextElement"
composite="false"
handler="linespacing.LineSpacingPropertyHandler">
<property-name
name="line-spacing">
</property-name>
</handler>
</extension>
</plugin>
который объявляет провайдер элемента CSS LineSpacingElementProvider
, который будет:
public class LineSpacingElementProvider implements IElementProvider
{
@Override
public Element getElement(final Object element, final CSSEngine engine)
{
if (element instanceof StyledText)
return new StyledTextElement((StyledText)element, engine);
return null;
}
}
StyledTextElement
это обеспечивает просто:
public class StyledTextElement extends ControlElement
{
public StyledTextElement(StyledText control, CSSEngine theEngine)
{
super(control, theEngine);
}
}
Второе объявление в plugin.xml
является обработчиком свойств CSS для свойства, называемого line-spacing
public class LineSpacingPropertyHandler extends AbstractCSSPropertySWTHandler implements ICSSPropertyHandler
{
@Override
protected void applyCSSProperty(Control control, String property, CSSValue value, String pseudo, CSSEngine engine) throws Exception
{
if (!(control instanceof StyledText))
return;
StyledText text = (StyledText)control;
if ("line-spacing".equals(property))
{
int pixelValue = (int)((CSSPrimitiveValue)value).getFloatValue(CSSPrimitiveValue.CSS_PX);
text.setLineSpacing(pixelValue);
}
}
@Override
protected String retrieveCSSProperty(Control control, String property, String pseudo, CSSEngine engine) throws Exception
{
return null;
}
}
С плагином, содержащим эту установку, вы можете затем изменить одну из существующих таблиц стилей CSS, чтобы она содержала:
StyledText {
line-spacing: 2px;
}