filedetaildialog.java
来自「SANCHO」· Java 代码 · 共 466 行 · 第 1/2 页
JAVA
466 行
/* * Copyright (C) 2004-2005 Rutger M. Ovidius for use with the sancho project. * See LICENSE.txt for license information. */package sancho.view.transfer;import java.util.Arrays;import java.util.Iterator;import org.eclipse.swt.SWT;import org.eclipse.swt.custom.CLabel;import org.eclipse.swt.events.KeyAdapter;import org.eclipse.swt.events.KeyEvent;import org.eclipse.swt.events.SelectionAdapter;import org.eclipse.swt.events.SelectionEvent;import org.eclipse.swt.layout.GridData;import org.eclipse.swt.layout.RowData;import org.eclipse.swt.widgets.Button;import org.eclipse.swt.widgets.Combo;import org.eclipse.swt.widgets.Composite;import org.eclipse.swt.widgets.Control;import org.eclipse.swt.widgets.Group;import org.eclipse.swt.widgets.Label;import org.eclipse.swt.widgets.List;import org.eclipse.swt.widgets.MessageBox;import org.eclipse.swt.widgets.Shell;import org.eclipse.swt.widgets.Text;import sancho.core.Sancho;import sancho.model.mldonkey.File;import sancho.model.mldonkey.Network;import sancho.model.mldonkey.enums.EnumFileState;import sancho.model.mldonkey.enums.EnumNetwork;import sancho.model.mldonkey.utility.OpCodes;import sancho.utility.SwissArmy;import sancho.view.preferences.PreferenceLoader;import sancho.view.utility.SResources;import sancho.view.utility.WidgetFactory;public class FileDetailDialog extends AbstractDetailDialog { private File file; private Button fileActionButton; private Button fileCancelButton; private CLabel clFileName; private CLabel clHash; private CLabel clSize; private CLabel clAge; private CLabel clSources; private CLabel clChunks; private CLabel clTransferred; private CLabel clRelativeAvail; private CLabel clLast; private CLabel clPriority; private CLabel clRate; private CLabel clETA; private CLabel clComment; private CLabel clEmpty; private List renameList; private Text renameText; public FileDetailDialog(Shell parentShell, File file) { super(parentShell); this.file = file; } protected void configureShell(Shell newShell) { super.configureShell(newShell); newShell.setText(SResources.getString("l.file") + " " + file.getId() + " " + SResources.getString("l.details").toLowerCase()); } protected Control createDialogArea(Composite parent) { Composite composite = (Composite) super.createDialogArea(parent); composite.setLayout(WidgetFactory.createGridLayout(1, 5, 5, 0, 5, false)); createFileGeneralGroup(composite); createFileTransferGroup(composite); // MultiNet chunks or just chunks < proto 17 createChunkGroup(composite, SResources.getString("dd.f.chunksInformation"), null); // Other network chunks if (file.hasAvails()) { Iterator i = file.getAllAvailNetworks().iterator(); while (i.hasNext()) { Network network = (Network) i.next(); if (network.isEnabled()) { createChunkGroup(composite, network.getName(), network); } } } if (file.getEnumNetwork() == EnumNetwork.DONKEY) createCommentGroup(composite); createRenameGroup(composite); if (file.getEnumNetwork() == EnumNetwork.FILETP) createMirrorGroup(composite); // Separator Label separator = new Label(composite, SWT.SEPARATOR | SWT.HORIZONTAL); separator.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); updateLabels(); file.addObserver(this); return composite; } /** * Tell the core to rename the file */ private void renameFile() { String newName = SResources.S_ES; if (!renameText.getText().equals(SResources.S_ES) && !renameText.getText().equals(file.getName())) { newName = renameText.getText(); } else if ((renameList.getSelection().length > 0) && !renameList.getSelection()[0].equals(file.getName())) { newName = renameList.getSelection()[0]; } if (!newName.equals(SResources.S_ES)) { file.rename(newName); } } private void createFileGeneralGroup(Composite parent) { Group fileGeneral = new Group(parent, SWT.SHADOW_ETCHED_OUT); fileGeneral.setText(SResources.getString("dd.f.fileInformation")); fileGeneral.setLayout(WidgetFactory.createGridLayout(4, 5, 0, 0, 0, false)); fileGeneral.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); clFileName = createLine(fileGeneral, "dd.f.fileName", true); clHash = createLine(fileGeneral, "dd.f.hash", true); clSize = createLine(fileGeneral, "dd.f.size", false); clAge = createLine(fileGeneral, "dd.f.age", false); clComment = createLine(fileGeneral, "dd.f.comment", true); } private void createFileTransferGroup(Composite parent) { Group fileTransfer = new Group(parent, SWT.SHADOW_ETCHED_OUT); fileTransfer.setText(SResources.getString("dd.f.transferInformation")); fileTransfer.setLayout(WidgetFactory.createGridLayout(4, 5, 0, 0, 0, false)); fileTransfer.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); clSources = createLine(fileTransfer, "dd.f.sources", false); clChunks = createLine(fileTransfer, "dd.f.chunks", false); clTransferred = createLine(fileTransfer, "dd.f.transferred", false); clRelativeAvail = createLine(fileTransfer, "dd.f.availability", false); clLast = createLine(fileTransfer, "dd.f.last", false); clPriority = createLine(fileTransfer, "dd.f.priority", false); clRate = createLine(fileTransfer, "dd.f.rate", false); clETA = createLine(fileTransfer, "dd.f.eta", false); if (SWT.getPlatform().equals("win32") && file.getChunkAges().length < 1000) { // 74824 clEmpty = createLine(fileTransfer, SResources.S_ES, false); createChunkAgesGroup(fileTransfer); } } /** * @param parent * @param resString * @param network */ private void createChunkGroup(Composite parent, String string, Network network) { ChunkCanvas chunkCanvas = super.createChunkGroup(parent, string, null, file, network); // file.addObserver(chunkCanvas); } private void createChunkAgesGroup(Composite parent) { // ugly Label label = new Label(parent, SWT.NONE); label.setText(SResources.getString("dd.f.chunkAges")); GridData gridData = new GridData(); gridData.widthHint = leftColumn; label.setLayoutData(gridData); final Combo chunkCombo = new Combo(parent, SWT.READ_ONLY); GridData data = new GridData(GridData.FILL_HORIZONTAL); data.widthHint = 1; chunkCombo.setLayoutData(data); int[] ages = file.getChunkAges(); for (int i = 0; i < ages.length; i++) { chunkCombo.add((i + 1) + ": " + (ages[i] > 75000000 ? "-" : SwissArmy.calcStringOfSeconds(ages[i]))); } if (ages.length > 0) chunkCombo.select(0); } private void createCommentGroup(Composite parent) { Label l = new Label(parent, SWT.SEPARATOR | SWT.HORIZONTAL); l.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); Composite renameComposite = new Composite(parent, SWT.NONE); renameComposite.setLayout(WidgetFactory.createGridLayout(2, 0, 0, 4, 0, false)); renameComposite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); final Text commentText = new Text(renameComposite, SWT.BORDER); commentText.setFont(PreferenceLoader.loadFont("consoleFontData")); GridData data = new GridData(GridData.FILL_HORIZONTAL); data.widthHint = 1; commentText.setLayoutData(data); commentText.addKeyListener(new KeyAdapter() { public void keyPressed(KeyEvent e) { if (e.character == SWT.CR) { addComment(commentText.getText()); commentText.setText(SResources.S_ES); } } }); Button commentButton = new Button(renameComposite, SWT.NONE); commentButton.setText(SResources.getString("dd.f.addComment")); commentButton.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END)); commentButton.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent s) { addComment(commentText.getText());
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?