/* * Created on Sep 3, 2009 3:12:13 PM * Copyright (C) 2009 Aelitis, 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; either version 2 * of the License, or (at your option) any later version. * 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. * * AELITIS, SAS au capital de 46,603.30 euros * 8 Allee Lenotre, La Grille Royale, 78600 Le Mesnil le Roi, France. */ package org.gudy.azureus2.ui.swt.shells; import org.eclipse.swt.SWT; import org.eclipse.swt.events.*; import org.eclipse.swt.layout.*; import org.eclipse.swt.widgets.*; import org.gudy.azureus2.core3.download.DownloadManager; import org.gudy.azureus2.core3.logging.LogAlert; import org.gudy.azureus2.core3.logging.Logger; import org.gudy.azureus2.core3.torrent.TOTorrentException; import org.gudy.azureus2.core3.util.*; import org.gudy.azureus2.ui.swt.Messages; import org.gudy.azureus2.ui.swt.Utils; import org.gudy.azureus2.ui.swt.components.shell.ShellFactory; import com.aelitis.azureus.ui.common.RememberedDecisionsManager; /** * @author TuxPaper * @created Sep 3, 2009 * */ public class AdvRenameWindow { private DownloadManager dm; private Shell shell; private String newName = null; protected int renameDecisions; private static final int RENAME_DISPLAY = 0x1; private static final int RENAME_SAVEPATH = 0x2; private static final int RENAME_TORRENT = 0x4; public static void main(String[] args) { AdvRenameWindow window = new AdvRenameWindow(); window.open(null); window.waitUntilDone(); } public AdvRenameWindow() { } public void open(DownloadManager dm) { this.dm = dm; Utils.execSWTThread(new AERunnable() { public void runSupport() { openInSWT(); } }); } private void openInSWT() { shell = ShellFactory.createMainShell(SWT.DIALOG_TRIM | SWT.RESIZE); Utils.setShellIcon(shell); shell.addTraverseListener(new TraverseListener() { public void keyTraversed(TraverseEvent e) { if (e.detail == SWT.TRAVERSE_ESCAPE) { shell.dispose(); } } }); Messages.setLanguageText(shell, "AdvRenameWindow.title"); Label lblMessage = new Label(shell, SWT.WRAP); Messages.setLanguageText(lblMessage, "AdvRenameWindow.message"); final Text txtInput = new Text(shell, SWT.BORDER); txtInput.setText(dm == null ? "" : dm.getDisplayName()); final Button btnDisplayName = new Button(shell, SWT.CHECK); Messages.setLanguageText(btnDisplayName, "MyTorrentsView.menu.rename.displayed"); final Button btnSavePath = new Button(shell, SWT.CHECK); Messages.setLanguageText(btnSavePath, "MyTorrentsView.menu.rename.save_path"); final Button btnTorrent = new Button(shell, SWT.CHECK); Messages.setLanguageText(btnTorrent, "AdvRenameWindow.rename.torrent"); Composite cButtons = new Composite(shell, SWT.NONE); RowLayout rowLayout = new RowLayout(SWT.HORIZONTAL); rowLayout.fill = true; rowLayout.spacing = 5; cButtons.setLayout(rowLayout); Button btnReset = new Button(cButtons, SWT.PUSH); Messages.setLanguageText(btnReset, "Button.reset"); btnReset.addSelectionListener(new SelectionListener() { public void widgetSelected(SelectionEvent e) { txtInput.setText(TorrentUtils.getLocalisedName(dm.getTorrent())); } public void widgetDefaultSelected(SelectionEvent e) { } }); Button btnOk = new Button(cButtons, SWT.PUSH); Messages.setLanguageText(btnOk, "Button.ok"); shell.setDefaultButton(btnOk); btnOk.addSelectionListener(new SelectionListener() { public void widgetSelected(SelectionEvent e) { newName = txtInput.getText(); renameDecisions = 0; if (btnDisplayName.getSelection()) { renameDecisions |= RENAME_DISPLAY; } if (btnSavePath.getSelection()) { renameDecisions |= RENAME_SAVEPATH; } if (btnTorrent.getSelection()) { renameDecisions |= RENAME_TORRENT; } RememberedDecisionsManager.setRemembered("adv.rename", renameDecisions); Utils.getOffOfSWTThread(new AERunnable() { public void runSupport() { doRename(); } }); shell.dispose(); } public void widgetDefaultSelected(SelectionEvent e) { } }); Button btnCancel = new Button(cButtons, SWT.PUSH); Messages.setLanguageText(btnCancel, "Button.cancel"); btnCancel.addSelectionListener(new SelectionListener() { public void widgetSelected(SelectionEvent e) { shell.dispose(); } public void widgetDefaultSelected(SelectionEvent e) { } }); shell.setLayout(new FormLayout()); FormData fd; fd = new FormData(); fd.top = new FormAttachment(0, 3); fd.left = new FormAttachment(0, 3); fd.right = new FormAttachment(100, -3); lblMessage.setLayoutData(fd); fd = new FormData(); fd.top = new FormAttachment(lblMessage, 5); fd.left = new FormAttachment(0, 3); fd.right = new FormAttachment(100, -3); fd.width = 300; txtInput.setLayoutData(fd); fd = new FormData(); fd.top = new FormAttachment(txtInput, 5); fd.left = new FormAttachment(0, 8); fd.right = new FormAttachment(100, -3); btnDisplayName.setLayoutData(fd); fd = new FormData(); fd.top = new FormAttachment(btnDisplayName, 2); fd.left = new FormAttachment(0, 8); fd.right = new FormAttachment(100, -3); btnSavePath.setLayoutData(fd); fd = new FormData(); fd.top = new FormAttachment(btnSavePath, 2); fd.left = new FormAttachment(0, 8); fd.right = new FormAttachment(100, -3); btnTorrent.setLayoutData(fd); int renameDecisions = RememberedDecisionsManager.getRememberedDecision("adv.rename"); if ((renameDecisions & RENAME_DISPLAY) > 0) { btnDisplayName.setSelection(true); } if ((renameDecisions & RENAME_SAVEPATH) > 0) { btnSavePath.setSelection(true); } if ((renameDecisions & RENAME_TORRENT) > 0) { btnTorrent.setSelection(true); } fd = new FormData(); fd.top = new FormAttachment(btnTorrent, 5); fd.right = new FormAttachment(100, -3); fd.bottom = new FormAttachment(100, -3); cButtons.setLayoutData(fd); shell.pack(); Utils.centreWindow(shell); shell.open(); } private void waitUntilDone() { while (shell != null && !shell.isDisposed()) { if (!shell.getDisplay().readAndDispatch()) { shell.getDisplay().sleep(); } } } private void doRename() { if (dm == null) { return; } if ((renameDecisions & RENAME_DISPLAY) > 0) { dm.getDownloadState().setDisplayName(newName); } if ((renameDecisions & RENAME_SAVEPATH) > 0) { try { dm.renameDownload(newName); } catch (Exception e) { Logger.log(new LogAlert(dm, LogAlert.REPEATABLE, "Download data rename operation failed", e)); } } if ((renameDecisions & RENAME_TORRENT) > 0) { try { dm.renameTorrentSafe(newName); } catch (Exception e) { Logger.log(new LogAlert(dm, LogAlert.REPEATABLE, "Torrent rename operation failed", e)); } } } }