Adjust field colouring to reflect overridden property values, added missing XPath version field.
git-svn-id: https://pmd.svn.sourceforge.net/svnroot/pmd/trunk@6877 51baf565-9d33-0410-a72c-fc3788e3496d
This commit is contained in:
1 parent
491a6e34e8
commit
5c98ea43c1
22 files changed
+179
-19
No files matched your search
+1
-1
@@ -23,7 +23,7 @@ public class ImageColumnDescriptor extends AbstractRuleColumnDescriptor {
|
||||
private String imagePath;
|
||||
private CellPainterBuilder painterBuilder;
|
||||
|
||||
public static final RuleColumnDescriptor filterExpression = new ImageColumnDescriptor("Exclusion rule", SWT.LEFT, 25, RuleFieldAccessor.violationRegex, false, PMDUiConstants.ICON_FILTER, Util.regexBuilderFor(16, 16));
|
||||
public static final RuleColumnDescriptor filterExpression = new ImageColumnDescriptor("Filters", SWT.LEFT, 25, RuleFieldAccessor.violationRegex, false, PMDUiConstants.ICON_FILTER, Util.regexBuilderFor(16, 16));
|
||||
|
||||
|
||||
public ImageColumnDescriptor(String labelKey, int theAlignment, int theWidth, RuleFieldAccessor theAccessor, boolean resizableFlag, String theImagePath, CellPainterBuilder thePainterBuilder) {
|
||||
|
||||
+17
-11
@@ -220,6 +220,9 @@ public class PMDPreferencePage extends PreferencePage implements IWorkbenchPrefe
|
||||
*/
|
||||
@Override
|
||||
protected Control createContents(Composite parent) {
|
||||
|
||||
populateRuleset();
|
||||
|
||||
Composite composite = new Composite(parent, SWT.NULL);
|
||||
layoutControls(composite);
|
||||
return composite;
|
||||
@@ -901,8 +904,8 @@ public class PMDPreferencePage extends PreferencePage implements IWorkbenchPrefe
|
||||
new RuleSetTreeItemProvider(groupingField, "??", Util.comparatorFrom(columnSorter, sortDescending))
|
||||
);
|
||||
|
||||
// ruleTreeViewer.setInput(ruleSet);
|
||||
// checkSelections();
|
||||
ruleTreeViewer.setInput(ruleSet);
|
||||
checkSelections();
|
||||
|
||||
TreeColumn[] columns = ruleTree.getColumns();
|
||||
for (TreeColumn column : columns) column.pack();
|
||||
@@ -1216,20 +1219,23 @@ public class PMDPreferencePage extends PreferencePage implements IWorkbenchPrefe
|
||||
|
||||
return button;
|
||||
}
|
||||
|
||||
private void populateRuleset() {
|
||||
|
||||
RuleSet defaultRuleSet = plugin.getPreferencesManager().getRuleSet();
|
||||
ruleSet = new RuleSet();
|
||||
ruleSet.addRuleSet(defaultRuleSet);
|
||||
ruleSet.setName(defaultRuleSet.getName());
|
||||
ruleSet.setDescription(Util.asCleanString(defaultRuleSet.getDescription()));
|
||||
ruleSet.addExcludePatterns(defaultRuleSet.getExcludePatterns());
|
||||
ruleSet.addIncludePatterns(defaultRuleSet.getIncludePatterns());
|
||||
}
|
||||
|
||||
/**
|
||||
* Populate the rule table
|
||||
*/
|
||||
private void populateRuleTable() {
|
||||
RuleSet defaultRuleSet = plugin.getPreferencesManager().getRuleSet();
|
||||
ruleSet = new RuleSet();
|
||||
ruleSet.addRuleSet(defaultRuleSet);
|
||||
ruleSet.setName(defaultRuleSet.getName());
|
||||
ruleSet.setDescription(Util.asCleanString(defaultRuleSet.getDescription()));
|
||||
ruleSet.addExcludePatterns(defaultRuleSet.getExcludePatterns());
|
||||
ruleSet.addIncludePatterns(defaultRuleSet.getIncludePatterns());
|
||||
private void populateRuleTable() {
|
||||
ruleTreeViewer.setInput(ruleSet);
|
||||
|
||||
checkSelections();
|
||||
}
|
||||
|
||||
|
||||
+34
@@ -1,9 +1,14 @@
|
||||
package net.sourceforge.pmd.eclipse.ui.preferences.editors;
|
||||
|
||||
import net.sourceforge.pmd.PropertyDescriptor;
|
||||
import net.sourceforge.pmd.Rule;
|
||||
import net.sourceforge.pmd.eclipse.ui.preferences.br.EditorFactory;
|
||||
import net.sourceforge.pmd.eclipse.ui.preferences.panelmanagers.AbstractRulePanelManager;
|
||||
import net.sourceforge.pmd.eclipse.util.ColourManager;
|
||||
import net.sourceforge.pmd.lang.rule.RuleReference;
|
||||
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.graphics.Color;
|
||||
import org.eclipse.swt.layout.GridData;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Control;
|
||||
@@ -16,8 +21,26 @@ import org.eclipse.swt.widgets.Label;
|
||||
*/
|
||||
public abstract class AbstractEditorFactory implements EditorFactory {
|
||||
|
||||
protected static ColourManager colourManager;
|
||||
protected static Color overriddenColour;
|
||||
|
||||
protected AbstractEditorFactory() { }
|
||||
|
||||
private static ColourManager managerFor(Display display) {
|
||||
|
||||
if (colourManager != null) return colourManager;
|
||||
colourManager = ColourManager.managerFor(display);
|
||||
return colourManager;
|
||||
}
|
||||
|
||||
private Color overriddenColour(Display display) {
|
||||
|
||||
if (overriddenColour != null) return overriddenColour;
|
||||
|
||||
overriddenColour = managerFor(display).colourFor(AbstractRulePanelManager.overridenColourValues);
|
||||
return overriddenColour;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
* @see net.sourceforge.pmd.ui.preferences.br.EditorFactory#columnsRequired()
|
||||
@@ -68,6 +91,17 @@ public abstract class AbstractEditorFactory implements EditorFactory {
|
||||
);
|
||||
}
|
||||
|
||||
protected void adjustRendering(Rule rule, PropertyDescriptor<?> desc, Control control) {
|
||||
|
||||
if (!(rule instanceof RuleReference)) return;
|
||||
|
||||
boolean isOverridden = ((RuleReference)rule).hasOverriddenProperty(desc);
|
||||
Display display = control.getDisplay();
|
||||
Color clr = isOverridden ? overriddenColour(display) : display.getSystemColor(SWT.COLOR_WHITE);
|
||||
|
||||
control.setBackground(clr);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the specified values as a single string using the delimiter.
|
||||
* @param values Object
|
||||
|
||||
+2
@@ -200,6 +200,7 @@ public abstract class AbstractMultiValueEditorFactory extends AbstractEditorFact
|
||||
|
||||
renumberLabelsIn(newControls);
|
||||
fillWidget(parentWidget, desc, rule);
|
||||
adjustRendering(rule, desc, parentWidget);
|
||||
sizeListener.addedRows(1);
|
||||
changeListener.changed(rule, desc, newValue);
|
||||
parent.getParent().layout();
|
||||
@@ -234,6 +235,7 @@ public abstract class AbstractMultiValueEditorFactory extends AbstractEditorFact
|
||||
|
||||
Object[] values = (Object[])rule.getProperty(desc);
|
||||
textWidget.setText(values == null ? "" : StringUtil.asString(values, delimiter + ' '));
|
||||
adjustRendering(rule, desc, textWidget);
|
||||
}
|
||||
|
||||
protected String[] textWidgetValues(Text textWidget) {
|
||||
|
||||
+1
-1
@@ -61,9 +61,9 @@ public class BooleanEditorFactory extends AbstractEditorFactory {
|
||||
boolean selected = butt.getSelection();
|
||||
if (selected == rule.getProperty(bp)) return;
|
||||
|
||||
// adjustRendering(butt, selected == bp.defaultValue().booleanValue());
|
||||
rule.setProperty(bp, Boolean.valueOf(selected));
|
||||
listener.changed(rule, desc, Boolean.valueOf(selected));
|
||||
adjustRendering(rule, desc, butt);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
+3
-1
@@ -50,7 +50,7 @@ public class CharacterEditorFactory extends AbstractEditorFactory {
|
||||
}
|
||||
}
|
||||
|
||||
public Control newEditorOn(Composite parent, int columnIndex, PropertyDescriptor<?> desc, final Rule rule, final ValueChangeListener listener, SizeChangeListener sizeListener) {
|
||||
public Control newEditorOn(Composite parent, int columnIndex, final PropertyDescriptor<?> desc, final Rule rule, final ValueChangeListener listener, SizeChangeListener sizeListener) {
|
||||
|
||||
if (columnIndex == 0) return addLabel(parent, desc);
|
||||
|
||||
@@ -70,6 +70,8 @@ public class CharacterEditorFactory extends AbstractEditorFactory {
|
||||
|
||||
rule.setProperty(cp, newValue);
|
||||
listener.changed(rule, cp, newValue);
|
||||
|
||||
adjustRendering(rule, desc, text);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
+2
@@ -49,6 +49,8 @@ public class DoubleEditorFactory extends AbstractNumericEditorFactory {
|
||||
|
||||
rule.setProperty(dp, newValue);
|
||||
listener.changed(rule, dp, newValue);
|
||||
|
||||
adjustRendering(rule, desc, spinner);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
+2
-1
@@ -33,7 +33,7 @@ public class EnumerationEditorFactory extends AbstractEditorFactory {
|
||||
}
|
||||
}
|
||||
|
||||
private static int indexOf(Object item, Object[][] items) {
|
||||
public static int indexOf(Object item, Object[][] items) {
|
||||
for (int i=0; i<items.length; i++) if (items[i][0].equals(item)) return i;
|
||||
return -1;
|
||||
}
|
||||
@@ -59,6 +59,7 @@ public class EnumerationEditorFactory extends AbstractEditorFactory {
|
||||
|
||||
rule.setProperty(ep, newValue);
|
||||
listener.changed(rule, desc, newValue);
|
||||
adjustRendering(rule, desc, combo);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
+2
@@ -49,6 +49,8 @@ public class FloatEditorFactory extends AbstractNumericEditorFactory {
|
||||
|
||||
rule.setProperty(fp, newValue);
|
||||
listener.changed(rule, fp, newValue);
|
||||
|
||||
adjustRendering(rule, desc, spinner);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
+1
-1
@@ -68,9 +68,9 @@ public class IntegerEditorFactory extends AbstractEditorFactory {
|
||||
int newValue = spinner.getSelection();
|
||||
if (newValue == rule.getProperty(ip)) return;
|
||||
|
||||
// adjustRendering(spinner, newValue == ip.defaultValue().intValue());
|
||||
rule.setProperty(ip, Integer.valueOf(newValue));
|
||||
listener.changed(rule, desc, Integer.valueOf(newValue));
|
||||
adjustRendering(rule, desc, spinner);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
+1
@@ -35,6 +35,7 @@ public class MethodEditorFactory extends AbstractEditorFactory {
|
||||
|
||||
Method method = (Method)rule.getProperty(desc);
|
||||
widget.setMethod(method);
|
||||
adjustRendering(rule, desc, widget);
|
||||
}
|
||||
|
||||
private static MethodProperty methodPropertyFrom(PropertyDescriptor<?> desc) {
|
||||
|
||||
+6
@@ -8,6 +8,7 @@ import net.sourceforge.pmd.util.StringUtil;
|
||||
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.events.SelectionListener;
|
||||
import org.eclipse.swt.graphics.Color;
|
||||
import org.eclipse.swt.graphics.Point;
|
||||
import org.eclipse.swt.layout.GridData;
|
||||
import org.eclipse.swt.layout.GridLayout;
|
||||
@@ -80,6 +81,11 @@ public class MethodPicker extends Composite {
|
||||
methodList.select(0);
|
||||
}
|
||||
|
||||
public void setBackground(Color clr) {
|
||||
typeText.setBackground(clr);
|
||||
methodList.setBackground(clr);
|
||||
}
|
||||
|
||||
public Point computeSize(int wHint, int hHint, boolean changed) {
|
||||
Point pt = typeText.computeSize(wHint, hHint, changed);
|
||||
pt.x *= 2;
|
||||
|
||||
+2
@@ -82,6 +82,8 @@ public class MultiMethodEditorFactory extends AbstractMultiValueEditorFactory {
|
||||
|
||||
Map<String, List<Method>> methodMap = ClassUtil.asMethodGroupsByTypeName(values);
|
||||
textWidget.setText(values == null ? "" : asString(methodMap));
|
||||
|
||||
adjustRendering(rule, desc, textWidget);
|
||||
}
|
||||
|
||||
protected Control addWidget(Composite parent, Object value, PropertyDescriptor<?> desc, Rule rule) {
|
||||
|
||||
+3
@@ -47,6 +47,7 @@ public class MultiTypeEditorFactory extends AbstractMultiValueEditorFactory {
|
||||
}
|
||||
|
||||
textWidget.setText(values == null ? "" : asString(values));
|
||||
adjustRendering(rule, desc, textWidget);
|
||||
}
|
||||
|
||||
private String asString(Class<?>[] types) {
|
||||
@@ -102,6 +103,8 @@ public class MultiTypeEditorFactory extends AbstractMultiValueEditorFactory {
|
||||
rule.setProperty(tmp, newValue);
|
||||
fillWidget(textWidget, desc, rule); // display the accepted values
|
||||
listener.changed(rule, desc, newValue);
|
||||
|
||||
adjustRendering(rule, desc, textWidget);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
+2
@@ -78,6 +78,8 @@ public class StringEditorFactory extends AbstractEditorFactory {
|
||||
rule.setProperty(sp, newValue);
|
||||
fillWidget(text, desc, rule); // redraw
|
||||
listener.changed(rule, desc, newValue);
|
||||
|
||||
adjustRendering(rule, desc, text);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
+2
@@ -86,6 +86,8 @@ public class TypeEditorFactory extends AbstractEditorFactory {
|
||||
|
||||
rule.setProperty(tp, newValue);
|
||||
listener.changed(rule, desc, newValue);
|
||||
|
||||
adjustRendering(rule, desc, typeText);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
+5
@@ -6,6 +6,7 @@ import net.sourceforge.pmd.util.StringUtil;
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.events.ModifyEvent;
|
||||
import org.eclipse.swt.events.ModifyListener;
|
||||
import org.eclipse.swt.graphics.Color;
|
||||
import org.eclipse.swt.graphics.Point;
|
||||
import org.eclipse.swt.layout.GridData;
|
||||
import org.eclipse.swt.layout.GridLayout;
|
||||
@@ -94,6 +95,10 @@ public class TypeText extends Composite {
|
||||
text.setText(cls.getName());
|
||||
}
|
||||
|
||||
public void setBackground(Color clr) {
|
||||
text.setBackground(clr);
|
||||
}
|
||||
|
||||
public void setEnabled(boolean flag) {
|
||||
super.setEnabled(flag);
|
||||
text.setEnabled(flag);
|
||||
|
||||
+13
@@ -35,9 +35,12 @@ public abstract class AbstractRulePanelManager implements RulePropertyManager {
|
||||
protected static Color textColour;
|
||||
protected static Color errorColour;
|
||||
protected static Color disabledColour;
|
||||
protected static Color overridenColour;
|
||||
|
||||
private static final String disabledTabText = "-------";
|
||||
|
||||
public static final int[] overridenColourValues = new int[] {196, 196, 255}; // light blue
|
||||
|
||||
public AbstractRulePanelManager(ValueChangeListener theListener) {
|
||||
changeListener = theListener;
|
||||
}
|
||||
@@ -73,7 +76,16 @@ public abstract class AbstractRulePanelManager implements RulePropertyManager {
|
||||
|
||||
protected void valueChanged(PropertyDescriptor<?> optionalDesc, Object newValue) {
|
||||
changeListener.changed(rules, optionalDesc, newValue);
|
||||
updateUI();
|
||||
}
|
||||
|
||||
protected void updateUI() {
|
||||
updateTabUI();
|
||||
updateOverridenFields();
|
||||
}
|
||||
|
||||
protected void updateOverridenFields() {
|
||||
|
||||
}
|
||||
|
||||
protected boolean canWorkWith(Rule rule) { return true; } // override as necessary
|
||||
@@ -131,6 +143,7 @@ public abstract class AbstractRulePanelManager implements RulePropertyManager {
|
||||
errorColour = clrMgr.colourFor(new int[] { 255, 0, 0 }); // red
|
||||
textColour = clrMgr.colourFor(new int[] { 0, 0, 0 }); // black
|
||||
disabledColour = clrMgr.colourFor(new int[] {128, 128, 128}); // grey
|
||||
overridenColour = clrMgr.colourFor(overridenColourValues);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+14
@@ -5,6 +5,7 @@ import java.net.URL;
|
||||
|
||||
import net.sourceforge.pmd.Rule;
|
||||
import net.sourceforge.pmd.eclipse.ui.preferences.br.ValueChangeListener;
|
||||
import net.sourceforge.pmd.lang.rule.RuleReference;
|
||||
import net.sourceforge.pmd.util.StringUtil;
|
||||
|
||||
import org.eclipse.swt.SWT;
|
||||
@@ -59,6 +60,18 @@ public class DescriptionPanelManager extends AbstractRulePanelManager {
|
||||
messageField.setVisible(flag);
|
||||
}
|
||||
|
||||
protected void updateOverridenFields() {
|
||||
|
||||
Rule rule = soleRule();
|
||||
|
||||
if (rule instanceof RuleReference) {
|
||||
RuleReference ruleReference = (RuleReference)rule;
|
||||
messageField.setBackground(ruleReference.getOverriddenMessage() != null ? overridenColour: null);
|
||||
descriptionBox.setBackground(ruleReference.getOverriddenDescription() != null ? overridenColour: null);
|
||||
externalURLField.setBackground(ruleReference.getOverriddenExternalInfoUrl() != null ? overridenColour: null);
|
||||
}
|
||||
}
|
||||
|
||||
public Control setupOn(Composite parent) {
|
||||
|
||||
initializeOn(parent);
|
||||
@@ -172,6 +185,7 @@ public class DescriptionPanelManager extends AbstractRulePanelManager {
|
||||
|
||||
if (!StringUtil.areSemanticEquals(rule.getMessage().trim(), newMessage)) {
|
||||
rule.setMessage(newMessage);
|
||||
updateUI();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+11
@@ -6,6 +6,7 @@ import java.util.List;
|
||||
import net.sourceforge.pmd.PMD;
|
||||
import net.sourceforge.pmd.Rule;
|
||||
import net.sourceforge.pmd.eclipse.ui.preferences.br.ValueChangeListener;
|
||||
import net.sourceforge.pmd.lang.rule.RuleReference;
|
||||
import net.sourceforge.pmd.util.StringUtil;
|
||||
|
||||
import org.eclipse.swt.SWT;
|
||||
@@ -40,6 +41,16 @@ public class ExamplePanelManager extends AbstractRulePanelManager {
|
||||
exampleField.setVisible(flag);
|
||||
}
|
||||
|
||||
protected void updateOverridenFields() {
|
||||
|
||||
Rule rule = soleRule();
|
||||
|
||||
if (rule instanceof RuleReference) {
|
||||
RuleReference ruleReference = (RuleReference)rule;
|
||||
exampleField.setBackground(ruleReference.getOverriddenExamples() != null ? overridenColour: null);
|
||||
}
|
||||
}
|
||||
|
||||
public Control setupOn(Composite parent) {
|
||||
|
||||
GridData gridData = new GridData(GridData.FILL_HORIZONTAL);
|
||||
|
||||
+1
@@ -3,6 +3,7 @@ package net.sourceforge.pmd.eclipse.ui.preferences.panelmanagers;
|
||||
import net.sourceforge.pmd.Rule;
|
||||
import net.sourceforge.pmd.eclipse.ui.preferences.br.ValueChangeListener;
|
||||
import net.sourceforge.pmd.eclipse.util.ColourManager;
|
||||
import net.sourceforge.pmd.lang.rule.RuleReference;
|
||||
import net.sourceforge.pmd.lang.rule.properties.StringProperty;
|
||||
import net.sourceforge.pmd.util.StringUtil;
|
||||
|
||||
|
||||
+54
-3
@@ -2,15 +2,23 @@ package net.sourceforge.pmd.eclipse.ui.preferences.panelmanagers;
|
||||
|
||||
import net.sourceforge.pmd.Rule;
|
||||
import net.sourceforge.pmd.eclipse.ui.preferences.br.ValueChangeListener;
|
||||
import net.sourceforge.pmd.eclipse.ui.preferences.editors.EnumerationEditorFactory;
|
||||
import net.sourceforge.pmd.eclipse.ui.preferences.editors.SWTUtil;
|
||||
import net.sourceforge.pmd.lang.rule.RuleReference;
|
||||
import net.sourceforge.pmd.lang.rule.XPathRule;
|
||||
import net.sourceforge.pmd.lang.rule.properties.EnumeratedProperty;
|
||||
import net.sourceforge.pmd.util.StringUtil;
|
||||
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.events.SelectionAdapter;
|
||||
import org.eclipse.swt.events.SelectionEvent;
|
||||
import org.eclipse.swt.layout.GridData;
|
||||
import org.eclipse.swt.layout.GridLayout;
|
||||
import org.eclipse.swt.widgets.Combo;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Control;
|
||||
import org.eclipse.swt.widgets.Event;
|
||||
import org.eclipse.swt.widgets.Label;
|
||||
import org.eclipse.swt.widgets.Listener;
|
||||
import org.eclipse.swt.widgets.Text;
|
||||
|
||||
@@ -20,7 +28,8 @@ import org.eclipse.swt.widgets.Text;
|
||||
*/
|
||||
public class XPathPanelManager extends AbstractRulePanelManager {
|
||||
|
||||
private Text xpathField;
|
||||
private Text xpathField;
|
||||
private Combo xpathVersionField;
|
||||
|
||||
public XPathPanelManager(ValueChangeListener theListener) {
|
||||
super(theListener);
|
||||
@@ -45,6 +54,17 @@ public class XPathPanelManager extends AbstractRulePanelManager {
|
||||
|
||||
protected void setVisible(boolean flag) {
|
||||
xpathField.setVisible(flag);
|
||||
xpathVersionField.setVisible(flag);
|
||||
}
|
||||
|
||||
protected void updateOverridenFields() {
|
||||
|
||||
Rule rule = soleRule();
|
||||
|
||||
if (rule instanceof RuleReference) {
|
||||
RuleReference ruleReference = (RuleReference)rule;
|
||||
xpathField.setBackground(ruleReference.hasOverriddenProperty(XPathRule.XPATH_DESCRIPTOR) ? overridenColour: null);
|
||||
}
|
||||
}
|
||||
|
||||
public Control setupOn(Composite parent) {
|
||||
@@ -58,7 +78,7 @@ public class XPathPanelManager extends AbstractRulePanelManager {
|
||||
xpathField = newTextField(panel);
|
||||
gridData = new GridData(GridData.FILL_BOTH);
|
||||
gridData.grabExcessHorizontalSpace = true;
|
||||
gridData.horizontalSpan = 1;
|
||||
gridData.horizontalSpan = 2;
|
||||
xpathField.setLayoutData(gridData);
|
||||
|
||||
xpathField.addListener(SWT.FocusOut, new Listener() {
|
||||
@@ -74,11 +94,41 @@ public class XPathPanelManager extends AbstractRulePanelManager {
|
||||
soleRule.setProperty(XPathRule.XPATH_DESCRIPTOR, newValue);
|
||||
valueChanged(XPathRule.XPATH_DESCRIPTOR, newValue);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
Label versionLabel = new Label(panel, 0);
|
||||
versionLabel.setText("XPath version:");
|
||||
gridData = new GridData();
|
||||
gridData.horizontalSpan = 1;
|
||||
gridData.grabExcessHorizontalSpace = false;
|
||||
versionLabel.setLayoutData(gridData);
|
||||
|
||||
final EnumeratedProperty<String> ep = XPathRule.VERSION_DESCRIPTOR;
|
||||
xpathVersionField = new Combo(panel, SWT.READ_ONLY);
|
||||
xpathVersionField.setItems(SWTUtil.labelsIn(ep.choices(), 0));
|
||||
|
||||
xpathVersionField.addSelectionListener(new SelectionAdapter() {
|
||||
public void widgetSelected(SelectionEvent e) {
|
||||
Rule rule = soleRule();
|
||||
int selectionIdx = xpathVersionField.getSelectionIndex();
|
||||
Object newValue = ep.choices()[selectionIdx][1];
|
||||
if (newValue.equals(rule.getProperty(ep))) return;
|
||||
|
||||
rule.setProperty(ep, newValue);
|
||||
// adjustRendering(rule, ep, xpathVersionField); TODO - won't compile?
|
||||
}
|
||||
});
|
||||
|
||||
return panel;
|
||||
}
|
||||
|
||||
private void configureVersionFieldFor(Rule rule) {
|
||||
|
||||
Object value = rule.getProperty(XPathRule.VERSION_DESCRIPTOR);
|
||||
int selectionIdx = EnumerationEditorFactory.indexOf(value, XPathRule.VERSION_DESCRIPTOR.choices());
|
||||
if (selectionIdx >= 0) xpathVersionField.select(selectionIdx);
|
||||
}
|
||||
|
||||
protected void adapt() {
|
||||
|
||||
Rule soleRule = soleRule();
|
||||
@@ -87,6 +137,7 @@ public class XPathPanelManager extends AbstractRulePanelManager {
|
||||
shutdown(xpathField);
|
||||
} else {
|
||||
show(xpathField, soleRule.getProperty(XPathRule.XPATH_DESCRIPTOR).trim());
|
||||
configureVersionFieldFor(soleRule);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user