/*******************************************************************************
* Copyright (c) 2001, 2005 IBM Corporation and others. All rights reserved. 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 Contributors: IBM Corporation - initial API and
* implementation Jens Lukowski/Innoopract - initial renaming/restructuring
*******************************************************************************/
package org.eclipse.wst.sse.ui.internal.contentoutline;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.ui.texteditor.IUpdate;
/**
* An IAction.AS_CHECK_BOX action that sets and gets its checked state along with a value from a
* preference store. Should be used with PropertyChangeUpdateActionContributionItem to listen to
* changes in the store and update the checked state from PropertyChangeEvents.
*/
public class PropertyChangeUpdateAction extends Action implements IUpdate {
private String fPreferenceKey;
private IPreferenceStore fStore;
private boolean fUpdateFromPropertyChange = true;
public PropertyChangeUpdateAction(String text, IPreferenceStore store, String preferenceKey,
boolean defaultValue) {
super(text, IAction.AS_CHECK_BOX);
fPreferenceKey = preferenceKey;
fStore = store;
fStore.setDefault(getPreferenceKey(), defaultValue);
setId(getPreferenceKey());
setChecked(getPreferenceStore().getBoolean(getPreferenceKey()));
}
/**
* @return Returns the orderPreferenceKey.
*/
public String getPreferenceKey() {
return fPreferenceKey;
}
/**
* @return Returns the store.
*/
public IPreferenceStore getPreferenceStore() {
return fStore;
}
/**
* @return Returns the updateFromPropertyChange.
*/
public boolean isUpdateFromPropertyChange() {
return fUpdateFromPropertyChange;
}
public final void run() {
super.run();
fStore.setValue(getPreferenceKey(), isChecked());
if (!isUpdateFromPropertyChange())
update();
}
/**
* @param updateFromPropertyChange The updateFromPropertyChange to set.
*/
public void setUpdateFromPropertyChange(boolean updateFromPropertyChange) {
fUpdateFromPropertyChange = updateFromPropertyChange;
}
public void update() {
setChecked(fStore.getBoolean(getPreferenceKey()));
}
}