Java Reference
In-Depth Information
options functional. To begin, we add an inner class,
PreferenceProperty
ChangeListener
, that will detect a change in the appropriate property and
invoke the
updateArchetypeColor()
method. To initialize and register this
listener, we override the
addNotationalListeners()
method.
private
PreferencePropertyChangeListener preferenceListener;
protected class
PreferencePropertyChangeListener
implements
IPropertyChangeListener {
public void
propertyChange(PropertyChangeEvent event) {
if
(event.getProperty().equals(
DiagramAppearancePreferencePage.PREF_MI_ARCHETYPE_COLOR)) {
updateArchetypeColor();
}
}
}
@Override
protected void
addNotationalListeners() {
super
.addNotationalListeners();
initPreferenceStoreListener();
}
protected void
updateArchetypeColor() {
getFigure().setForegroundColor(getPreferenceColor());
getFigure().repaint();
}
private
Color getPreferenceColor() {
IPreferenceStore preferenceStore = (IPreferenceStore)
getDiagramPreferencesHint().getPreferenceStore();
org.eclipse.swt.graphics.RGB archetypeColorPreference =
PreferenceConverter.getColor(preferenceStore,
DiagramAppearancePreferencePage.PREF_MI_ARCHETYPE_COLOR);
return new
Color(
null
, archetypeColorPreference);
}
private void
initPreferenceStoreListener() {
preferenceListener =
new
PreferencePropertyChangeListener();
IPreferenceStore preferenceStore = (IPreferenceStore)
getDiagramPreferencesHint().getPreferenceStore();
preferenceStore.addPropertyChangeListener(preferenceListener);
}
@Override
protected void
setForegroundColor(Color color) {
super
.setForegroundColor(getPreferenceColor());
}
The overridden
setForegroundColor()
method and the preference lis-
tener both obtain the appropriate color from the preference store, as shown in
Search WWH ::
Custom Search