/**
* Created on Jul 22, 2008
*
* Copyright 2008 Vuze, Inc. All rights reserved.
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License only.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package com.aelitis.azureus.ui.swt.toolbar;
import org.gudy.azureus2.core3.util.Debug;
import org.gudy.azureus2.plugins.ui.toolbar.UIToolBarActivationListener;
import org.gudy.azureus2.plugins.ui.toolbar.UIToolBarManager;
import com.aelitis.azureus.ui.common.ToolBarItem;
import com.aelitis.azureus.ui.swt.skin.SWTSkinButtonUtility;
import com.aelitis.azureus.ui.swt.skin.SWTSkinObjectText;
import com.aelitis.azureus.ui.swt.views.skin.ToolBarView;
/**
* @author TuxPaper
* @created Jul 22, 2008
*
*/
public class ToolBarItemSO
implements ToolBarItem
{
String imageID = "image.toolbar.run";
String id;
private SWTSkinButtonUtility skinButton;
private SWTSkinObjectText skinTitle;
boolean enabled = false;
private String textID;
private String tooltipID;
private boolean alwaysAvailable = false;
private final ToolBarView tbView;
private UIToolBarActivationListener defaultActivation;
private final boolean isPluginItem;
private String groupID = UIToolBarManager.GROUP_MAIN;
private long defaultState;
private boolean isDown;
/**
* @param id
* @param image
*/
public ToolBarItemSO(ToolBarView tbView, String id, String imageid) {
super();
this.tbView = tbView;
this.id = id;
imageID = imageid;
isPluginItem = false;
}
public ToolBarItemSO(ToolBarView tbView, String id, String imageid,
String textID) {
super();
this.tbView = tbView;
this.id = id;
imageID = imageid;
this.textID = textID;
this.tooltipID = textID + ".tooltip";
isPluginItem = false;
}
public ToolBarItemSO(ToolBarView tbView, String id, boolean isPluginItem) {
this.tbView = tbView;
this.id = id;
this.isPluginItem = isPluginItem;
}
/* (non-Javadoc)
* @see com.aelitis.azureus.ui.common.ToolBarItem#triggerToolBarItem(long, java.lang.Object)
*/
public boolean triggerToolBarItem(long activationType, Object datasource) {
return tbView.triggerToolBarItem(this, activationType, datasource);
}
public String getID() {
return id;
}
public void setSkinButton(SWTSkinButtonUtility btn) {
this.skinButton = btn;
skinButton.setDisabled(!enabled);
}
public SWTSkinButtonUtility getSkinButton() {
return skinButton;
}
public void setSkinTitle(SWTSkinObjectText s) {
skinTitle = s;
}
public long getState() {
long state = (isEnabled() ? STATE_ENABLED : 0) | (isDown ? STATE_DOWN : 0);
return state;
}
public void setState(long state) {
// TODO: This gets called a lot for the same toolbar item -- need to look
// into why.
setEnabled((state & STATE_ENABLED) > 0);
isDown = (state & STATE_DOWN) > 0;
if (skinButton != null) {
skinButton.getSkinObject().switchSuffix(isDown ? "-selected" : "", 4, false);
}
}
private boolean isEnabled() {
if (skinButton != null) {
return !skinButton.isDisabled();
}
return enabled;
}
private void setEnabled(boolean enabled) {
if (alwaysAvailable && !enabled) {
return;
}
this.enabled = enabled;
if (skinButton != null) {
skinButton.setDisabled(!enabled);
}
}
public String getImageID() {
return imageID;
}
public void setImageID(String imageID) {
this.imageID = imageID;
if (skinButton != null) {
skinButton.setImage(imageID);
}
}
/**
* @param textID the textID to set
*/
public void setTextID(String textID) {
this.textID = textID;
if (skinTitle != null) {
skinTitle.setTextID(textID);
}
}
/**
* @return the textID
*/
public String getTextID() {
return textID;
}
public String getTooltipID() {
return tooltipID;
}
public void setTooltipID(String tooltipID) {
this.tooltipID = tooltipID;
}
public void setAlwaysAvailable(boolean alwaysAvailable) {
this.alwaysAvailable = alwaysAvailable;
if (alwaysAvailable) {
setEnabled(true);
}
}
public boolean isAlwaysAvailable() {
return alwaysAvailable;
}
public void setDefaultActivationListener(
UIToolBarActivationListener defaultActivation) {
this.defaultActivation = defaultActivation;
}
public UIToolBarActivationListener getDefaultActivationListener() {
return defaultActivation;
}
public void dispose() {
// ToolBarView will dispose of skinobjects
skinButton = null;
skinTitle = null;
}
public String getGroupID() {
return groupID;
}
public void setGroupID(String groupID) {
this.groupID = groupID;
}
public void setDefaultState(long state) {
this.defaultState = state;
}
public long getDefaultState() {
return defaultState;
}
}