/******************************************************************************* * Copyright (c) 1998, 2015 Oracle and/or its affiliates. All rights reserved. * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 * which accompanies this distribution. * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html * and the Eclipse Distribution License is available at * http://www.eclipse.org/org/documents/edl-v10.php. * * Contributors: * Oracle - initial API and implementation from Oracle TopLink ******************************************************************************/ package org.eclipse.persistence.tools.workbench.framework.app; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import javax.swing.Action; import javax.swing.JButton; import org.eclipse.persistence.tools.workbench.framework.action.ToggleFrameworkAction; /** * This button remains depressed if the action indicates it is selected. */ public class ToggleToolBarButton extends JButton { private PropertyChangeListener actionListener; public ToggleToolBarButton() { super(); this.actionListener = this.buildActionListener(); } public ToggleToolBarButton(ToggleFrameworkAction action) { this(); this.setAction(action); } private PropertyChangeListener buildActionListener() { return new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent e) { if (e.getPropertyName() == ToggleFrameworkAction.TOGGLE_STATE_PROPERTY) { ToggleToolBarButton.this.setSelected(((Boolean) e.getNewValue()).booleanValue()); } } }; } /** * @see javax.swing.AbstractButton#setAction(javax.swing.Action) */ public void setAction(Action a) { ToggleFrameworkAction oldTFA = (ToggleFrameworkAction) this.getAction(); ToggleFrameworkAction newTFA = (ToggleFrameworkAction) a; if (oldTFA != null) { oldTFA.removePropertyChangeListener(this.actionListener); } if (newTFA == null) { this.setSelected(false); } else { newTFA.addPropertyChangeListener(this.actionListener); this.setSelected(newTFA.isSelected()); } super.setAction(a); } }