/**
*
* @author SessonaD
*/
package me.dsnet.quickopener.actions;
import me.dsnet.quickopener.actions.popup.CustomCommandPopupAction;
import me.dsnet.quickopener.actions.popup.CustomFileSystemPopupAction;
import me.dsnet.quickopener.actions.popup.CustomTerminalPopupAction;
import java.awt.Component;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JPopupMenu;
import org.openide.awt.DropDownButtonFactory;
import org.openide.util.ImageUtilities;
import org.openide.util.NbBundle.Messages;
import org.openide.util.actions.Presenter;
@Messages("CTL_CustomCommand=Launch custom command")
public final class ToolbarPresenter implements Presenter.Toolbar {
public ToolbarPresenter(){
}
@Override
public Component getToolbarPresenter() {
final ImageIcon run16 = ImageUtilities.loadImageIcon("me/dsnet/quickopener/icons/run.png", false);
final ImageIcon run32 = ImageUtilities.loadImageIcon("me/dsnet/quickopener/icons/run24.png", false);
final ImageIcon folder = ImageUtilities.loadImageIcon("me/dsnet/quickopener/icons/folder-documents-icon-cu.png",false);
final ImageIcon terminal = ImageUtilities.loadImageIcon("me/dsnet/quickopener/icons/terminal-cu.png",false);
CustomCommandPopupAction cAction=new CustomCommandPopupAction("Launch custom command...",run16);
CustomTerminalPopupAction tAction=new CustomTerminalPopupAction("Open shell in...",terminal);
CustomFileSystemPopupAction fAction=new CustomFileSystemPopupAction("Open filesystem in...",folder);
//popup
JPopupMenu popup = new JPopupMenu();
popup.add(cAction);
popup.addSeparator();
popup.add(tAction);
popup.add(fAction);
//button
final JButton dropDownButton = DropDownButtonFactory.createDropDownButton(run16,popup);
dropDownButton.addActionListener(cAction);
dropDownButton.addPropertyChangeListener("PreferredIconSize", new PropertyChangeListener(){
@Override
public void propertyChange(PropertyChangeEvent evt)
{
boolean useSmallIcon = true;
final Object prop = evt.getNewValue();
if (prop instanceof Integer) {
if(((Integer)prop).intValue()==24) {
useSmallIcon = false;
}
}
if(useSmallIcon){
dropDownButton.setIcon(run16);
}else {
dropDownButton.setIcon(run32);
}
}
});
return dropDownButton;
}
}