/* * Copyright 2012 jMethods, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.myjavaworld.jftp; import java.awt.Insets; import java.util.ResourceBundle; import javax.swing.Action; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.JButton; import javax.swing.JToolBar; import javax.swing.SwingConstants; import com.myjavaworld.gui.MButton; import com.myjavaworld.jftp.actions.AbortAction; import com.myjavaworld.jftp.actions.ChangeLocalDirectoryAction; import com.myjavaworld.jftp.actions.ChangeRemoteDirectoryAction; import com.myjavaworld.jftp.actions.ConnectAction; import com.myjavaworld.jftp.actions.DeleteLocalFileAction; import com.myjavaworld.jftp.actions.DeleteRemoteFileAction; import com.myjavaworld.jftp.actions.DisconnectAction; import com.myjavaworld.jftp.actions.DownloadAction; import com.myjavaworld.jftp.actions.ManageCertificatesAction; import com.myjavaworld.jftp.actions.ManageFavoritesAction; import com.myjavaworld.jftp.actions.NewLocalDirectoryAction; import com.myjavaworld.jftp.actions.NewLocalFileAction; import com.myjavaworld.jftp.actions.NewRemoteDirectoryAction; import com.myjavaworld.jftp.actions.NewRemoteFileAction; import com.myjavaworld.jftp.actions.NewSessionAction; import com.myjavaworld.jftp.actions.ReconnectAction; import com.myjavaworld.jftp.actions.RenameLocalFileAction; import com.myjavaworld.jftp.actions.RenameRemoteFileAction; import com.myjavaworld.jftp.actions.UploadAction; import com.myjavaworld.util.ResourceLoader; /** * Main tool bar for JFTP * * @author Sai Pullabhotla, psai [at] jMethods [dot] com * @version 2.0 * */ public class JFTPToolBar extends JToolBar { private static final String HELP_ID_HOME = "index"; private JFTP jftp = null; private MButton butNewSession = null; private MButton butConnect = null; private MButton butDisconnect = null; private MButton butReconnect = null; private MButton butAbort = null; private MButton butUpload = null; private MButton butDownload = null; private MButton butNewLocalFile = null; private MButton butNewLocalDirectory = null; private MButton butChangeLocalDirectory = null; private MButton butRenameLocalFile = null; private MButton butDeleteLocalFile = null; private MButton butNewRemoteFile = null; private MButton butNewRemoteDirectory = null; private MButton butChangeRemoteDirectory = null; private MButton butRenameRemoteFile = null; private MButton butDeleteRemoteFile = null; private MButton butManageFavorites = null; private MButton butManageCertificates = null; private MButton butHelp = null; public JFTPToolBar(JFTP jftp) { super(SwingConstants.HORIZONTAL); setBorder(BorderFactory.createEtchedBorder()); this.jftp = jftp; setFloatable(false); this.setRollover(true); prepareToolBar(); } @Override public Insets getInsets() { return new Insets(2, 2, 2, 2); } private void prepareToolBar() { ResourceBundle resources = ResourceLoader .getBundle("com.myjavaworld.jftp.JFTPToolBar"); butNewSession = new MButton(); butNewSession.setIcon(JFTPUtil.getIcon("newSession16.gif")); butNewSession.setToolTipText(resources.getString("tooltip.newSession")); butNewSession.addActionListener(NewSessionAction.getInstance(jftp)); butConnect = new MButton(); butConnect.setIcon(JFTPUtil.getIcon("connect16.gif")); butConnect.setToolTipText(resources.getString("tooltip.connect")); butConnect.addActionListener(ConnectAction.getInstance(jftp)); butDisconnect = new MButton(); butDisconnect.setIcon(JFTPUtil.getIcon("disconnect16.gif")); butDisconnect.setToolTipText(resources.getString("tooltip.disconnect")); butDisconnect.addActionListener(DisconnectAction.getInstance(jftp)); butReconnect = new MButton(); butReconnect.setIcon(JFTPUtil.getIcon("reconnect16.gif")); butReconnect.setToolTipText(resources.getString("tooltip.reconnect")); butReconnect.addActionListener(ReconnectAction.getInstance(jftp)); butAbort = new MButton(); butAbort.setIcon(JFTPUtil.getIcon("abort16.gif")); butAbort.setToolTipText(resources.getString("tooltip.abort")); butAbort.addActionListener(AbortAction.getInstance(jftp)); butUpload = new MButton(); butUpload.setIcon(JFTPUtil.getIcon("upload16.gif")); butUpload.setToolTipText(resources.getString("tooltip.upload")); butUpload.addActionListener(UploadAction.getInstance(jftp)); butDownload = new MButton(); butDownload.setIcon(JFTPUtil.getIcon("download16.gif")); butDownload.setToolTipText(resources.getString("tooltip.download")); butDownload.addActionListener(DownloadAction.getInstance(jftp)); butNewLocalFile = new MButton(); butNewLocalFile.setIcon(JFTPUtil.getIcon("newLocalFile16.gif")); butNewLocalFile.setToolTipText(resources .getString("tooltip.newLocalFile")); butNewLocalFile.addActionListener(NewLocalFileAction.getInstance(jftp)); butNewLocalDirectory = new MButton(); butNewLocalDirectory.setIcon(JFTPUtil .getIcon("newLocalDirectory16.gif")); butNewLocalDirectory.setToolTipText(resources .getString("tooltip.newLocalDirectory")); butNewLocalDirectory.addActionListener(NewLocalDirectoryAction .getInstance(jftp)); butChangeLocalDirectory = new MButton(); butChangeLocalDirectory.setIcon(JFTPUtil .getIcon("changeLocalDirectory16.gif")); butChangeLocalDirectory.setToolTipText(resources .getString("tooltip.changeLocalDirectory")); butChangeLocalDirectory.addActionListener(ChangeLocalDirectoryAction .getInstance(jftp)); butRenameLocalFile = new MButton(); butRenameLocalFile.setIcon(JFTPUtil.getIcon("renameLocalFile16.gif")); butRenameLocalFile.setToolTipText(resources .getString("tooltip.renameLocalFile")); butRenameLocalFile.addActionListener(RenameLocalFileAction .getInstance(jftp)); butDeleteLocalFile = new MButton(); butDeleteLocalFile.setIcon(JFTPUtil.getIcon("deleteLocalFile16.gif")); butDeleteLocalFile.setToolTipText(resources .getString("tooltip.deleteLocalFiles")); butDeleteLocalFile.addActionListener(DeleteLocalFileAction .getInstance(jftp)); butNewRemoteFile = new MButton(); butNewRemoteFile.setIcon(JFTPUtil.getIcon("newRemoteFile16.gif")); butNewRemoteFile.setToolTipText(resources .getString("tooltip.newRemoteFile")); butNewRemoteFile.addActionListener(NewRemoteFileAction .getInstance(jftp)); butNewRemoteDirectory = new MButton(); butNewRemoteDirectory.setIcon(JFTPUtil .getIcon("newRemoteDirectory16.gif")); butNewRemoteDirectory.setToolTipText(resources .getString("tooltip.newRemoteDirectory")); butNewRemoteDirectory.addActionListener(NewRemoteDirectoryAction .getInstance(jftp)); butChangeRemoteDirectory = new MButton(); butChangeRemoteDirectory.setIcon(JFTPUtil .getIcon("changeRemoteDirectory16.gif")); butChangeRemoteDirectory.setToolTipText(resources .getString("tooltip.changeRemoteDirectory")); butChangeRemoteDirectory.addActionListener(ChangeRemoteDirectoryAction .getInstance(jftp)); butRenameRemoteFile = new MButton(); butRenameRemoteFile.setIcon(JFTPUtil.getIcon("renameRemoteFile16.gif")); butRenameRemoteFile.setToolTipText(resources .getString("tooltip.renameRemoteFile")); butRenameRemoteFile.addActionListener(RenameRemoteFileAction .getInstance(jftp)); butDeleteRemoteFile = new MButton(); butDeleteRemoteFile.setIcon(JFTPUtil.getIcon("deleteRemoteFile16.gif")); butDeleteRemoteFile.setToolTipText(resources .getString("tooltip.deleteRemoteFiles")); butDeleteRemoteFile.addActionListener(DeleteRemoteFileAction .getInstance(jftp)); butManageFavorites = new MButton(); butManageFavorites.setIcon(JFTPUtil.getIcon("favorites16.gif")); butManageFavorites.setToolTipText(resources .getString("tooltip.manageFavorites")); butManageFavorites.addActionListener(ManageFavoritesAction .getInstance(jftp)); butManageCertificates = new MButton(); butManageCertificates.setIcon(JFTPUtil.getIcon("certificate16.gif")); butManageCertificates.setToolTipText(resources .getString("tooltip.manageCertificates")); butManageCertificates.addActionListener(ManageCertificatesAction .getInstance(jftp)); butHelp = new MButton(); butHelp.setIcon(JFTPUtil.getIcon("help16.gif")); butHelp.setToolTipText(resources.getString("tooltip.help")); JFTPHelp2.getInstance().enableHelp(butHelp, HELP_ID_HOME); add(butNewSession); add(Box.createHorizontalStrut(2)); add(butConnect); add(Box.createHorizontalStrut(2)); add(butDisconnect); add(Box.createHorizontalStrut(2)); add(butReconnect); addSeparator(); add(butDownload); add(Box.createHorizontalStrut(2)); add(butUpload); add(Box.createHorizontalStrut(2)); add(butAbort); addSeparator(); add(butNewLocalFile); add(Box.createHorizontalStrut(2)); add(butNewLocalDirectory); add(Box.createHorizontalStrut(2)); add(butChangeLocalDirectory); add(Box.createHorizontalStrut(2)); add(butRenameLocalFile); add(Box.createHorizontalStrut(2)); add(butDeleteLocalFile); addSeparator(); add(butNewRemoteFile); add(Box.createHorizontalStrut(2)); add(butNewRemoteDirectory); add(Box.createHorizontalStrut(2)); add(butChangeRemoteDirectory); add(Box.createHorizontalStrut(2)); add(butRenameRemoteFile); add(Box.createHorizontalStrut(2)); add(butDeleteRemoteFile); addSeparator(); add(butManageFavorites); add(butManageCertificates); addSeparator(); add(butHelp); } @Override public JButton add(Action action) { JButton b = super.add(action); b.setFocusPainted(false); return b; } @Override protected JButton createActionComponent(Action a) { JButton b = super.createActionComponent(a); return b; } public void updateButtons() { FTPSession session = jftp.getCurrentSession(); boolean nullSession = session == null; boolean connected = !nullSession && session.isConnected(); int localFileSelectionCount = 0; if (!nullSession) { localFileSelectionCount = session.getLocalFileSelectionCount(); } int remoteFileSelectionCount = 0; if (connected) { remoteFileSelectionCount = session.getRemoteFileSelectionCount(); } butConnect.setEnabled(!nullSession && !connected); butDisconnect.setEnabled(connected); butReconnect .setEnabled(!nullSession && session.getRemoteHost() != null); butAbort.setEnabled(connected); butDownload.setEnabled(connected && remoteFileSelectionCount > 0); butUpload.setEnabled(connected && localFileSelectionCount > 0); butNewLocalFile.setEnabled(!nullSession); butNewLocalDirectory.setEnabled(!nullSession); butChangeLocalDirectory.setEnabled(!nullSession); butRenameLocalFile.setEnabled(!nullSession && localFileSelectionCount == 1); butDeleteLocalFile.setEnabled(!nullSession && localFileSelectionCount > 0); butNewRemoteFile.setEnabled(connected); butNewRemoteDirectory.setEnabled(connected); butChangeRemoteDirectory.setEnabled(connected); butRenameRemoteFile.setEnabled(connected && remoteFileSelectionCount == 1); butDeleteRemoteFile.setEnabled(connected && remoteFileSelectionCount > 0); } }