/**
* Copyright (c) 2005-2011 by Appcelerator, Inc. All Rights Reserved.
* Licensed under the terms of the Eclipse Public License (EPL).
* Please see the license.txt included with this distribution for details.
* Any modifications to this file must keep this entire header intact.
*/
package org.python.pydev.red_core;
import org.eclipse.jface.text.source.ISourceViewer;
import org.eclipse.jface.text.source.LineNumberRulerColumn;
import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.swt.widgets.Composite;
import org.python.pydev.core.callbacks.ICallbackListener;
import org.python.pydev.editor.PyEdit;
import org.python.pydev.red_core.preferences.PydevRedCorePreferencesInitializer;
import com.aptana.editor.common.extensions.FindBarEditorExtension;
import com.aptana.editor.common.extensions.ThemeableEditorExtension;
public class AddRedCoreThemeImpl {
private FindBarEditorExtension themeableEditorFindBarExtension;
private ThemeableEditorExtension themeableEditorColorsExtension;
@SuppressWarnings({ "unchecked", "rawtypes" })
public void installRedCoreTheme(final PyEdit edit) {
final PyEditThemeAdaptable adaptable = new PyEditThemeAdaptable(edit);
themeableEditorFindBarExtension = new FindBarEditorExtension(adaptable);
if (PydevRedCorePreferencesInitializer.getUseAptanaThemes()) {
//may be null!
themeableEditorColorsExtension = new ThemeableEditorExtension(adaptable);
}
edit.onCreatePartControl.registerListener(new ICallbackListener() {
public Object call(Object obj) {
Composite parent = (Composite) obj;
if (themeableEditorColorsExtension != null) {
themeableEditorColorsExtension.setParent(parent);
}
Composite newParent = themeableEditorFindBarExtension.createFindBarComposite(parent);
return newParent;
}
});
edit.onAfterCreatePartControl.registerListener(new ICallbackListener() {
public Object call(Object obj) {
themeableEditorFindBarExtension.createFindBar(adaptable.getISourceViewer());
if (themeableEditorColorsExtension != null) {
themeableEditorColorsExtension.overrideThemeColors();
}
return null;
}
});
edit.onInitializeLineNumberRulerColumn.registerListener(new ICallbackListener() {
public Object call(Object obj) {
if (themeableEditorColorsExtension != null) {
themeableEditorColorsExtension.initializeLineNumberRulerColumn((LineNumberRulerColumn) obj);
}
return null;
}
});
edit.onDispose.registerListener(new ICallbackListener() {
public Object call(Object obj) {
themeableEditorFindBarExtension.dispose();
if (themeableEditorColorsExtension != null) {
themeableEditorColorsExtension.dispose();
}
return null;
}
});
edit.onHandlePreferenceStoreChanged.registerListener(new ICallbackListener() {
public Object call(Object event) {
if (themeableEditorColorsExtension != null) {
themeableEditorColorsExtension.handlePreferenceStoreChanged((PropertyChangeEvent) event);
}
return null;
}
});
edit.onCreateSourceViewer.registerListener(new ICallbackListener() {
public Object call(Object viewer) {
if (themeableEditorColorsExtension != null) {
themeableEditorColorsExtension.createBackgroundPainter((ISourceViewer) viewer);
}
return null;
}
});
edit.onCreateActions.registerListener(new ICallbackListener() {
public Object call(Object obj) {
themeableEditorFindBarExtension.createFindBarActions();
return null;
}
});
edit.onGetAdapter.registerListener(new ICallbackListener() {
public Object call(Object adaptable) {
return themeableEditorFindBarExtension.getFindBarDecoratorAdapter((Class) adaptable);
}
});
}
}