package org.limewire.ui.swing.library.table; import java.awt.event.ActionEvent; import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; import java.util.List; import org.limewire.core.api.library.LibraryManager; import org.limewire.core.api.library.LocalFileItem; import org.limewire.ui.swing.action.AbstractAction; import org.limewire.ui.swing.library.LibrarySelected; import org.limewire.ui.swing.properties.FileInfoDialog; import org.limewire.ui.swing.properties.FileInfoDialogFactory; import org.limewire.ui.swing.properties.FileInfoDialog.FileInfoType; import org.limewire.ui.swing.util.I18n; import com.google.inject.Inject; import com.google.inject.Provider; /** * Handles renaming a file. Opens the FileInfo dialog and * enables editing on the file name within the dialog. */ public class RenameFileAction extends AbstractAction { private final Provider<List<LocalFileItem>> selectedLocalFileItems; private final FileInfoDialogFactory factory; @Inject public RenameFileAction(Provider<LibraryManager> libraryManager, FileInfoDialogFactory factory, @LibrarySelected Provider<List<LocalFileItem>> selectedLocalFileItems) { super(I18n.tr("Rename")); this.selectedLocalFileItems = selectedLocalFileItems; this.factory = factory; } @Override public void actionPerformed(ActionEvent e) { final FileInfoDialog dialog = factory.createFileInfoDialog(selectedLocalFileItems.get().get(0), FileInfoType.LOCAL_FILE); dialog.addComponentListener(new ComponentAdapter(){ @Override public void componentShown(ComponentEvent e) { dialog.renameFile(); } }); dialog.setVisible(true); } }