/**
* Copyright (c) 2010-2011 KUBO Atsuhiro <kubo@iteman.jp>,
* All rights reserved.
*
* This file is part of MakeGood.
*
* This program and the accompanying materials are made available under
* the terms of the Eclipse Public License v1.0 which accompanies this
* distribution, and is available at http://www.eclipse.org/legal/epl-v10.html
*/
package com.piece_framework.makegood.ui;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
import org.eclipse.core.runtime.preferences.IEclipsePreferences.IPreferenceChangeListener;
import org.eclipse.core.runtime.preferences.IEclipsePreferences.PreferenceChangeEvent;
import org.eclipse.core.runtime.preferences.IScopeContext;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.ISelectionProvider;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.ui.IPartListener2;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.IWorkbenchPartReference;
import org.eclipse.ui.texteditor.AbstractTextEditor;
public class MakeGoodStatusMonitor implements IPartListener2, ISelectionChangedListener, IPreferenceChangeListener {
private static final String[] PREFERENCE_QUALIFIERS = {
"org.eclipse.dltk.core", //$NON-NLS-1$
"org.eclipse.php.core", //$NON-NLS-1$
"org.eclipse.php.debug.core", //$NON-NLS-1$
"org.eclipse.php.debug.core.Debug_Process_Preferences", //$NON-NLS-1$
"com.piece_framework.makegood.core", //$NON-NLS-1$
};
@Override
public void partActivated(IWorkbenchPartReference partRef) {
IWorkbenchPart activePart = partRef.getPage().getActivePart();
if (activePart == null) return;
MakeGoodContext.getInstance().getActivePart().update(activePart);
if (!(activePart instanceof AbstractTextEditor)) {
addSelectionChangedListener(activePart);
}
}
@Override
public void partBroughtToTop(IWorkbenchPartReference partRef) {
}
@Override
public void partClosed(IWorkbenchPartReference partRef) {
}
@Override
public void partDeactivated(IWorkbenchPartReference partRef) {
}
@Override
public void partOpened(IWorkbenchPartReference partRef) {
}
@Override
public void partHidden(IWorkbenchPartReference partRef) {
}
@Override
public void partVisible(IWorkbenchPartReference partRef) {
}
@Override
public void partInputChanged(IWorkbenchPartReference partRef) {
}
@Override
public void selectionChanged(SelectionChangedEvent event) {
MakeGoodContext.getInstance().updateStatus();
}
public void addSelectionChangedListener(IWorkbenchPart activePart) {
ISelectionProvider provider = activePart.getSite().getSelectionProvider();
if (provider != null) {
provider.addSelectionChangedListener(this);
}
}
@Override
public void preferenceChange(PreferenceChangeEvent event) {
MakeGoodContext.getInstance().updateStatus();
}
public void addPreferenceChangeListener(IScopeContext context) {
for (String qualifier: PREFERENCE_QUALIFIERS) {
IEclipsePreferences node = context.getNode(qualifier);
if (node != null) {
node.addPreferenceChangeListener(this);
}
}
}
}