blob: c8efef6918cccfa6d78f783955e5796142348f7d [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2012 Rushan R. Gilmullin and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Rushan R. Gilmullin - initial API and implementation
*******************************************************************************/
package org.eclipse.osbp.vaaclipse.widgets;
import java.util.ArrayList;
import java.util.List;
/**
* @author rushan
*
*/
public class TwoStateToolbarButton extends ToolbarButtonBase {
private String primaryStyle;
private String selectedStyle;
private boolean switchOn = false;
private boolean switchStateByUserClickEnabled = true;
private List<ClickListener> userListeners = new ArrayList<ClickListener>();
public TwoStateToolbarButton() {
this("Blank", null);
}
public TwoStateToolbarButton(String label, String iconURI) {
super(label, iconURI);
setPrimaryStyle("vaaclipsebutton");
setSelectedStyle("pushed");
setCheckedState(false);
super.addClickListener(new ClickListener() {
public void buttonClick(ClickEvent event) {
if (switchStateByUserClickEnabled) {
setCheckedState(!switchOn);
for (ClickListener l : userListeners) {
l.buttonClick(event);
}
}
}
});
}
public boolean getCheckedState() {
return switchOn;
}
public void setCheckedState(boolean switchOn) {
if (switchOn) {
addStyleName(selectedStyle);
} else {
removeStyleName(selectedStyle);
}
this.switchOn = switchOn;
}
@Override
public void addListener(ClickListener listener) {
this.userListeners.add(listener);
}
public boolean isSwitchStateByUserClickEnabled() {
return switchStateByUserClickEnabled;
}
public void setSwitchStateByUserClickEnabled(
boolean switchStateByUserClickEnabled) {
this.switchStateByUserClickEnabled = switchStateByUserClickEnabled;
}
public String getPrimaryStyle() {
return primaryStyle;
}
public void setPrimaryStyle(String primaryStyle) {
removePrimaryStyle();
this.primaryStyle = primaryStyle;
this.addStyleName(this.primaryStyle);
}
public void removePrimaryStyle() {
if (this.primaryStyle != null)
this.removeStyleName(this.primaryStyle);
}
public String getSelectedStyle() {
return selectedStyle;
}
public void setSelectedStyle(String selectedStyle) {
if (this.switchOn)
this.removeStyleName(this.selectedStyle);
this.selectedStyle = selectedStyle;
if (this.switchOn)
this.addStyleName(this.selectedStyle);
}
}