blob: 50567cb15412c447008449de63eab1365d3941c5 [file] [log] [blame]
/******************************************************************************
* Copyright (c) 2002, 2008 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
****************************************************************************/
package org.eclipse.gmf.runtime.diagram.ui.actions;
import org.eclipse.core.runtime.Assert;
import org.eclipse.gmf.runtime.diagram.ui.internal.actions.PropertyChangeAction;
import org.eclipse.ui.IWorkbenchPage;
/**
* @author melaasar
*
* A generic action for changing and reflecting checked properties
*
*/
public class CheckedPropertyAction extends PropertyChangeAction {
/**
* The property valye
*/
private Object propertyValue;
/**
* Creates a new boolean property change action isntance
*
* @param workbenchPage The workbench page
* @param propertyName The property name
* @param propertyId The property id
* @param property the initial value of the property
*/
protected CheckedPropertyAction(
IWorkbenchPage workbenchPage,
String propertyId,
String propertyName,
Object propertyValue) {
super(workbenchPage, propertyId, propertyName);
Assert.isNotNull(propertyValue);
this.propertyValue = propertyValue;
}
protected boolean isOperationHistoryListener() {
return true;
}
/* (non-Javadoc)
* @see org.eclipse.jface.action.IAction#getStyle()
*/
public int getStyle() {
return AS_CHECK_BOX;
}
/* (non-Javadoc)
* @see org.eclipse.gmf.runtime.common.ui.action.IRepeatableAction#refresh()
*/
public void refresh() {
super.refresh();
setChecked(calculateChecked());
}
/**
* Calculates the check state of the action
*
* @return <code>true</code> if action should be checked, <code>false</code> otherwise
*/
protected boolean calculateChecked() {
return propertyValue.equals(getOperationSetPropertyValue(getPropertyId()));
}
/* (non-Javadoc)
* @see org.eclipse.gmf.runtime.diagram.ui.actions.internal.PropertyChangeAction#getNewPropertyValue()
*/
protected Object getNewPropertyValue() {
return propertyValue;
}
}