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