blob: fef880b8b2cfe8be6a14aadf30cbe6a4d00a26ec [file] [log] [blame]
/*******************************************************************************
* 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()));
}
}