* Initialize the composite with values from a rule.
*
* @param ruleWrapper the rule to take the info from.
*/
public void init( RuleWrapper ruleWrapper ) {
TextSymbolizerWrapper textSymbolizerWrapper = ruleWrapper.getTextSymbolizersWrapper();
boolean widgetEnabled = true;
if (textSymbolizerWrapper == null) {
widgetEnabled = false;
/*
* create a dummy local one to create the widgets
*/
TextSymbolizer newSymbolizer = Utilities.createDefaultTextSymbolizer(SLD.POINT);
textSymbolizerWrapper = new TextSymbolizerWrapper(newSymbolizer, null, SLD.POINT);
}
mainComposite = new Composite(parent, SWT.NONE);
mainComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
mainComposite.setLayout(new GridLayout(3, true));
labelEnableButton = new Button(mainComposite, SWT.CHECK);
GridData labelEnableButtonGD = new GridData(SWT.BEGINNING, SWT.CENTER, false, false);
labelEnableButtonGD.horizontalSpan = 3;
labelEnableButton.setLayoutData(labelEnableButtonGD);
labelEnableButton.setText(Messages.PointLabelsParametersComposite_0);
labelEnableButton.setSelection(widgetEnabled);
labelEnableButton.addSelectionListener(this);
// header
new Label(mainComposite, SWT.NONE);
Label valueLabel = new Label(mainComposite, SWT.NONE);
valueLabel.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, true, false));
valueLabel.setText(Messages.PointLabelsParametersComposite_1);
Label fieldsLabel = new Label(mainComposite, SWT.NONE);
fieldsLabel.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, true, false));
fieldsLabel.setText(Messages.PointLabelsParametersComposite_2);
// label name
Label labelNameLabel = new Label(mainComposite, SWT.NONE);
labelNameLabel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
labelNameLabel.setText(Messages.PointLabelsParametersComposite_3);
labelNameText = new Text(mainComposite, SWT.SINGLE | SWT.LEAD | SWT.BORDER);
GridData labelNameTextGD = new GridData(SWT.FILL, SWT.CENTER, true, false);
labelNameText.setLayoutData(labelNameTextGD);
labelNameText.addFocusListener(this);
labelNameAttributecombo = new Combo(mainComposite, SWT.DROP_DOWN | SWT.READ_ONLY);
GridData labelNameAttributecomboGD = new GridData(SWT.FILL, SWT.CENTER, true, false);
labelNameAttributecombo.setLayoutData(labelNameAttributecomboGD);
labelNameAttributecombo.setItems(allAttributesArrays);
labelNameAttributecombo.addSelectionListener(this);
labelNameAttributecombo.select(0);
String labelName = textSymbolizerWrapper.getLabelName();
if (labelName != null) {
int index = getAttributeIndex(labelName, allAttributesArrays);
if (index != -1) {
labelNameAttributecombo.select(index);
} else {
labelNameText.setText(labelName);
}
} else {
labelNameText.setText(""); //$NON-NLS-1$
}
// label alpha
Label labelOpactityLabel = new Label(mainComposite, SWT.NONE);
labelOpactityLabel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
labelOpactityLabel.setText(Messages.PointLabelsParametersComposite_5);
labelOpacitySpinner = new Spinner(mainComposite, SWT.BORDER);
labelOpacitySpinner.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
labelOpacitySpinner.setMaximum(100);
labelOpacitySpinner.setMinimum(0);
labelOpacitySpinner.setIncrement(10);
String opacity = textSymbolizerWrapper.getOpacity();
Double tmpOpacity = isDouble(opacity);
int tmp = 100;
if (tmpOpacity != null) {
tmp = (int) (tmpOpacity.doubleValue() * 100);
}
labelOpacitySpinner.setSelection(tmp);
labelOpacitySpinner.addSelectionListener(this);
labelOpacityAttributecombo = new Combo(mainComposite, SWT.DROP_DOWN | SWT.READ_ONLY);
labelOpacityAttributecombo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
labelOpacityAttributecombo.setItems(numericAttributesArrays);
labelOpacityAttributecombo.addSelectionListener(this);
labelOpacityAttributecombo.select(0);
if (tmpOpacity == null) {
int index = getAttributeIndex(opacity, numericAttributesArrays);
if (index != -1) {
labelOpacityAttributecombo.select(index);
}
}
// rotation
Label rotationLabel = new Label(mainComposite, SWT.NONE);
rotationLabel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
rotationLabel.setText(Messages.PointLabelsParametersComposite_6);
rotationSpinner = new Spinner(mainComposite, SWT.BORDER);
rotationSpinner.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
rotationSpinner.setMaximum(360);
rotationSpinner.setMinimum(-360);
rotationSpinner.setIncrement(45);
String rotationStr = textSymbolizerWrapper.getRotation();
Double tmpRotation = isDouble(rotationStr);
tmp = 0;
if (tmpRotation != null) {
tmp = tmpRotation.intValue();
}
rotationSpinner.setSelection(tmp);
rotationSpinner.addSelectionListener(this);
rotationAttributecombo = new Combo(mainComposite, SWT.DROP_DOWN | SWT.READ_ONLY);
rotationAttributecombo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
rotationAttributecombo.setItems(numericAttributesArrays);
rotationAttributecombo.addSelectionListener(this);
rotationAttributecombo.select(0);
if (tmpRotation == null) {
int index = getAttributeIndex(rotationStr, numericAttributesArrays);
if (index != -1) {
rotationAttributecombo.select(index);
}
}
// font
Label fontLabel = new Label(mainComposite, SWT.NONE);
fontLabel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
fontLabel.setText(Messages.PointLabelsParametersComposite_7);
fontEditor = new FontEditor(mainComposite);
GridData fontButtonGD = new GridData(SWT.FILL, SWT.FILL, true, false);
fontButtonGD.horizontalSpan = 2;
fontButton = fontEditor.getButton();
fontButton.setLayoutData(fontButtonGD);
fontEditor.setListener(this);
FontData[] fontData = textSymbolizerWrapper.getFontData();
if (fontData != null) {
fontEditor.setFontList(fontData);
}
// font color
Label fontColorLabel = new Label(mainComposite, SWT.NONE);
fontColorLabel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
fontColorLabel.setText(Messages.PointLabelsParametersComposite_8);
fontColorEditor = new StolenColorEditor(mainComposite, this);
fontColorButton = fontColorEditor.getButton();
GridData fontColorButtonGD = new GridData(SWT.FILL, SWT.CENTER, true, false);
fontColorButtonGD.horizontalSpan = 2;
fontColorButton.setLayoutData(fontColorButtonGD);
Color tmpColor = null;;
try {
tmpColor = Color.decode(textSymbolizerWrapper.getColor());
} catch (Exception e) {
tmpColor = Color.black;
}
fontColorEditor.setColor(tmpColor);
// label halo
Label haloLabel = new Label(mainComposite, SWT.NONE);
haloLabel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
haloLabel.setText(Messages.PointLabelsParametersComposite_9);
haloColorEditor = new StolenColorEditor(mainComposite, this);
haloColorButton = haloColorEditor.getButton();
GridData haloColorButtonGD = new GridData(SWT.FILL, SWT.CENTER, true, false);
haloColorButton.setLayoutData(haloColorButtonGD);
tmpColor = null;;
try {
tmpColor = Color.decode(textSymbolizerWrapper.getHaloColor());
} catch (Exception e) {
tmpColor = Color.black;
}
haloColorEditor.setColor(tmpColor);
haloRadiusSpinner = new Spinner(mainComposite, SWT.BORDER);
haloRadiusSpinner.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
haloRadiusSpinner.setMaximum(20);
haloRadiusSpinner.setMinimum(0);
haloRadiusSpinner.setIncrement(1);
String haloRadius = textSymbolizerWrapper.getHaloRadius();
Double tmpRadius = isDouble(haloRadius);
tmp = 0;
if (tmpRadius != null) {
tmp = tmpRadius.intValue();
}
haloRadiusSpinner.setSelection(tmp);
haloRadiusSpinner.addSelectionListener(this);
// anchor
Label anchorLabel = new Label(mainComposite, SWT.NONE);
anchorLabel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
anchorLabel.setText(Messages.PointLabelsParametersComposite_10);
anchorVerticalCombo = new Combo(mainComposite, SWT.DROP_DOWN | SWT.READ_ONLY);
anchorVerticalCombo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
anchorVerticalCombo.setItems(Alignments.toVerticalStrings());
anchorVerticalCombo.addSelectionListener(this);
String anchorY = textSymbolizerWrapper.getAnchorY();
Alignments vertAlign = Alignments.verticalAlignmentfromDouble(anchorY);
anchorVerticalCombo.select(vertAlign.toIndex());
anchorHorizontalCombo = new Combo(mainComposite, SWT.DROP_DOWN | SWT.READ_ONLY);
anchorHorizontalCombo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
anchorHorizontalCombo.setItems(Alignments.toHorizontalStrings());
anchorHorizontalCombo.addSelectionListener(this);
String anchorX = textSymbolizerWrapper.getAnchorX();
Alignments horAlign = Alignments.horizontalAlignmentfromDouble(anchorX);
anchorHorizontalCombo.select(horAlign.toIndex());
// displacement
Label displacementLabel = new Label(mainComposite, SWT.NONE);
displacementLabel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
displacementLabel.setText(Messages.PointLabelsParametersComposite_11);
String displacementX = textSymbolizerWrapper.getDisplacementX();
String displacementY = textSymbolizerWrapper.getDisplacementY();
Double tmpXdisplacement = Utilities.isNumber(displacementX, Double.class);
Double tmpYdisplacement = Utilities.isNumber(displacementY, Double.class);
if (tmpXdisplacement == null || tmpYdisplacement == null) {
tmpXdisplacement = 0.0;
tmpYdisplacement = 0.0;
}
xDisplacementSpinner = new Spinner(mainComposite, SWT.BORDER);
xDisplacementSpinner.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
xDisplacementSpinner.setMaximum(Utilities.DISPLACEMENT_MAX);
xDisplacementSpinner.setMinimum(Utilities.DISPLACEMENT_MIN);
xDisplacementSpinner.setIncrement(Utilities.DISPLACEMENT_STEP);
xDisplacementSpinner.setSelection((int) (10 * tmpXdisplacement));
xDisplacementSpinner.setDigits(1);
xDisplacementSpinner.addSelectionListener(this);
yDisplacementSpinner = new Spinner(mainComposite, SWT.BORDER);
yDisplacementSpinner.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
yDisplacementSpinner.setMaximum(Utilities.DISPLACEMENT_MAX);
yDisplacementSpinner.setMinimum(Utilities.DISPLACEMENT_MIN);
yDisplacementSpinner.setIncrement(Utilities.DISPLACEMENT_STEP);
yDisplacementSpinner.setSelection((int) (10 * tmpYdisplacement));
yDisplacementSpinner.setDigits(1);
yDisplacementSpinner.addSelectionListener(this);
// vendor options
Group vendorOptionsGroup = new Group(mainComposite, SWT.SHADOW_ETCHED_IN);
GridData vendorOptionsGD = new GridData(SWT.FILL, SWT.FILL, true, true);
vendorOptionsGD.horizontalSpan = 3;
vendorOptionsGroup.setLayoutData(vendorOptionsGD);
vendorOptionsGroup.setLayout(new GridLayout(2, false));
vendorOptionsGroup.setText(Messages.PointLabelsParametersComposite_12);
// max displacement
Label maxDisplacementLabel = new Label(vendorOptionsGroup, SWT.NONE);
maxDisplacementLabel.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
maxDisplacementLabel.setText(VendorOptions.VENDOROPTION_MAXDISPLACEMENT.toGuiString());
maxDisplacementText = new Text(vendorOptionsGroup, SWT.SINGLE | SWT.LEAD | SWT.BORDER);
GridData maxDisplacementTextGD = new GridData(SWT.FILL, SWT.CENTER, true, false);
maxDisplacementText.setLayoutData(maxDisplacementTextGD);
maxDisplacementText.addFocusListener(this);
String maxDisplacementVO = textSymbolizerWrapper.getMaxDisplacementVO();
if (maxDisplacementVO != null) {
maxDisplacementText.setText(maxDisplacementVO);
} else {
maxDisplacementText.setText(""); //$NON-NLS-1$
}
// autoWrap
Label autoWrapLabel = new Label(vendorOptionsGroup, SWT.NONE);
autoWrapLabel.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
autoWrapLabel.setText(VendorOptions.VENDOROPTION_AUTOWRAP.toGuiString());
autoWrapText = new Text(vendorOptionsGroup, SWT.SINGLE | SWT.LEAD | SWT.BORDER);
GridData autoWrapTextGD = new GridData(SWT.FILL, SWT.CENTER, true, false);
autoWrapText.setLayoutData(autoWrapTextGD);
autoWrapText.addFocusListener(this);
String autoWrapVO = textSymbolizerWrapper.getAutoWrapVO();
if (autoWrapVO != null) {
autoWrapText.setText(autoWrapVO);
} else {
autoWrapText.setText(""); //$NON-NLS-1$
}
// spaceAround
Label spaceAroundLabel = new Label(vendorOptionsGroup, SWT.NONE);
spaceAroundLabel.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
spaceAroundLabel.setText(VendorOptions.VENDOROPTION_SPACEAROUND.toGuiString());
spaceAroundText = new Text(vendorOptionsGroup, SWT.SINGLE | SWT.LEAD | SWT.BORDER);
GridData spaceAroundTextGD = new GridData(SWT.FILL, SWT.CENTER, true, false);
spaceAroundText.setLayoutData(spaceAroundTextGD);
spaceAroundText.addFocusListener(this);
String spaceAroundVO = textSymbolizerWrapper.getSpaceAroundVO();
if (spaceAroundVO != null) {
spaceAroundText.setText(spaceAroundVO);
} else {
spaceAroundText.setText(""); //$NON-NLS-1$
}