/*
* Carrot2 project.
*
* Copyright (C) 2002-2016, Dawid Weiss, Stanisław Osiński.
* All rights reserved.
*
* Refer to the full license file "carrot2.LICENSE"
* in the root folder of the repository checkout or at:
* http://www.carrot2.org/carrot2.LICENSE
*/
package org.carrot2.workbench.core.ui.actions;
import org.carrot2.workbench.core.WorkbenchCorePlugin;
import org.carrot2.workbench.core.preferences.PreferenceConstants;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.IWorkbenchWindowActionDelegate;
import org.eclipse.ui.actions.ActionDelegate;
/**
* Controls the state of the auto-update feature for editors (re-processing
* after attributes change).
*/
public class AutoUpdateActionDelegate extends ActionDelegate implements IWorkbenchWindowActionDelegate
{
/*
*
*/
private IAction action;
/*
*
*/
private IPreferenceStore store;
/**
* When auto-update key in the preference store changes, update the state
* of this action.
*/
private IPropertyChangeListener listener = new IPropertyChangeListener() {
public void propertyChange(PropertyChangeEvent event)
{
if (PreferenceConstants.AUTO_UPDATE.equals(event.getProperty()))
{
updateActionState();
}
}
};
/*
*
*/
@Override
public void run(IAction action)
{
store.setValue(PreferenceConstants.AUTO_UPDATE,
!store.getBoolean(PreferenceConstants.AUTO_UPDATE));
}
/*
*
*/
@Override
public void init(IAction action)
{
super.init(action);
this.action = action;
this.store = WorkbenchCorePlugin.getDefault().getPreferenceStore();
store.addPropertyChangeListener(listener);
updateActionState();
}
@Override
public void dispose()
{
super.dispose();
store.removePropertyChangeListener(listener);
}
/*
*
*/
final void updateActionState()
{
action.setChecked(store.getBoolean(PreferenceConstants.AUTO_UPDATE));
}
/*
*
*/
public void init(IWorkbenchWindow window)
{
// Empty.
}
}