⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 actionhandler.java

📁 jfa2ce 源码帮助开发人员更好的理解运用
💻 JAVA
字号:
/******************************************************************************* * Copyright (c) 2004, 2006 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.jface.commands;import org.eclipse.core.commands.AbstractHandler;import org.eclipse.core.commands.ExecutionEvent;import org.eclipse.core.commands.ExecutionException;import org.eclipse.core.commands.HandlerEvent;import org.eclipse.core.commands.IHandlerListener;import org.eclipse.jface.action.IAction;import org.eclipse.jface.util.IPropertyChangeListener;import org.eclipse.jface.util.PropertyChangeEvent;import org.eclipse.swt.widgets.Event;/** * <p> * This class adapts instances of <code>IAction</code> to * <code>IHandler</code>. * </p> *  * @since 3.1 */public final class ActionHandler extends AbstractHandler {	/**	 * The wrapped action. This value is never <code>null</code>.	 */	private final IAction action;	/**	 * The property change listener hooked on to the action. This is initialized	 * when the first listener is attached to this handler, and is removed when	 * the handler is disposed or the last listener is removed.	 */	private IPropertyChangeListener propertyChangeListener;	/**	 * Creates a new instance of this class given an instance of	 * <code>IAction</code>.	 * 	 * @param action	 *            the action. Must not be <code>null</code>.	 */	public ActionHandler(final IAction action) {		if (action == null) {			throw new NullPointerException();		}		this.action = action;	}	public final void addHandlerListener(final IHandlerListener handlerListener) {		if (!hasListeners()) {			attachListener();		}		super.addHandlerListener(handlerListener);	}	/**	 * When a listener is attached to this handler, then this registers a	 * listener with the underlying action.	 * 	 * @since 3.1	 */	private final void attachListener() {		if (propertyChangeListener == null) {			propertyChangeListener = new IPropertyChangeListener() {				public final void propertyChange(						final PropertyChangeEvent propertyChangeEvent) {					final String property = propertyChangeEvent.getProperty();					fireHandlerChanged(new HandlerEvent(ActionHandler.this,							IAction.ENABLED.equals(property), IAction.HANDLED									.equals(property)));				}			};		}		this.action.addPropertyChangeListener(propertyChangeListener);	}	/**	 * When no more listeners are registered, then this is used to removed the	 * property change listener from the underlying action.	 */	private final void detachListener() {		this.action.removePropertyChangeListener(propertyChangeListener);		propertyChangeListener = null;	}	/**	 * Removes the property change listener from the action.	 * 	 * @see org.eclipse.core.commands.IHandler#dispose()	 */	public final void dispose() {		if (hasListeners()) {			action.removePropertyChangeListener(propertyChangeListener);		}	}		public final Object execute(final ExecutionEvent event)			throws ExecutionException {		if ((action.getStyle() == IAction.AS_CHECK_BOX)				|| (action.getStyle() == IAction.AS_RADIO_BUTTON)) {			action.setChecked(!action.isChecked());		}		final Object trigger = event.getTrigger();		try {			if (trigger instanceof Event) {				action.runWithEvent((Event) trigger);			} else {				action.runWithEvent(new Event());			}		} catch (Exception e) {			throw new ExecutionException(					"While executing the action, an exception occurred", e); //$NON-NLS-1$		}		return null;	}	/**	 * Returns the action associated with this handler	 * 	 * @return the action associated with this handler (not null)	 * @since 3.1	 */	public final IAction getAction() {		return action;	}		public final boolean isEnabled() {		return action.isEnabled();	}		public final boolean isHandled() {		return action.isHandled();	}		public final void removeHandlerListener(			final IHandlerListener handlerListener) {		super.removeHandlerListener(handlerListener);		if (!hasListeners()) {			detachListener();		}	}		public final String toString() {		final StringBuffer buffer = new StringBuffer();		buffer.append("ActionHandler("); //$NON-NLS-1$		buffer.append(action);		buffer.append(')');		return buffer.toString();	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -