uploadviewframe.java
来自「SANCHO」· Java 代码 · 共 226 行
JAVA
226 行
/* * Copyright (C) 2004-2005 Rutger M. Ovidius for use with the sancho project. * See LICENSE.txt for license information. */package sancho.view.shares;import org.eclipse.jface.dialogs.Dialog;import org.eclipse.swt.SWT;import org.eclipse.swt.dnd.DND;import org.eclipse.swt.dnd.DropTarget;import org.eclipse.swt.dnd.DropTargetAdapter;import org.eclipse.swt.dnd.DropTargetEvent;import org.eclipse.swt.dnd.FileTransfer;import org.eclipse.swt.dnd.TextTransfer;import org.eclipse.swt.dnd.Transfer;import org.eclipse.swt.events.SelectionAdapter;import org.eclipse.swt.events.SelectionEvent;import org.eclipse.swt.layout.GridData;import org.eclipse.swt.widgets.Button;import org.eclipse.swt.widgets.Composite;import org.eclipse.swt.widgets.Control;import org.eclipse.swt.widgets.DirectoryDialog;import org.eclipse.swt.widgets.Label;import org.eclipse.swt.widgets.Shell;import org.eclipse.swt.widgets.Text;import sancho.core.Sancho;import sancho.model.mldonkey.utility.OpCodes;import sancho.view.utility.AbstractTab;import sancho.view.utility.SResources;import sancho.view.utility.Spinner;import sancho.view.utility.WidgetFactory;import sancho.view.viewFrame.TabbedViewFrame;public class UploadViewFrame extends TabbedViewFrame { ShareDialog shareDialog; public UploadViewFrame(Composite parent, String prefString, String prefImageString, AbstractTab aTab) { super(parent, prefString, prefImageString, aTab, "uploads"); gView = new UploadTableView(this); createViewListener(new UploadViewListener(this)); createViewToolBar(); switchToTab(cTabFolder.getItems()[0]); } // Temporary - until gui protocol has better access to shared directories public void createViewToolBar() { super.createViewToolBar(); addToolItem("ti.u.unshare", "minus", new SelectionAdapter() { public void widgetSelected(SelectionEvent s) { shareDialog = new ShareDialog(gView.getShell(), SResources.getString("l.unshareDirectory"), false); if (shareDialog.open() == ShareDialog.OK) sendShareCommand(false); shareDialog = null; } }); addToolItem("ti.u.share", "plus", new SelectionAdapter() { public void widgetSelected(SelectionEvent s) { shareDialog = new ShareDialog(gView.getShell(), SResources.getString("l.shareDirectory"), true); if (shareDialog.open() == ShareDialog.OK) sendShareCommand(true); shareDialog = null; } }); addToolItem("ti.u.reshare", "rotate", new SelectionAdapter() { public void widgetSelected(SelectionEvent s) { if (Sancho.hasCollectionFactory()) getCore().getSharedFileCollection().reshare(); } }); addToolSeparator(); addRefine(); } public void sendShareCommand(boolean share) { if (shareDialog != null && !shareDialog.getDirectory().equals(SResources.S_ES) && Sancho.hasCollectionFactory()) { String command = share ? "share " + shareDialog.getPriority() : "unshare"; command += " \"" + shareDialog.getDirectory() + "\""; Sancho.send(OpCodes.S_CONSOLE_MESSAGE, command); } } class ShareDialog extends Dialog { private int priority; private String directory; private boolean share; private Spinner spinner; private Text dirText; private String title; public int ADD_ID = 999; public ShareDialog(Shell parentShell, String dialogTitle, boolean share) { super(parentShell); this.share = share; this.title = dialogTitle; } protected void configureShell(Shell newShell) { super.configureShell(newShell); newShell.setImage(SResources.getImage("ProgramIcon")); newShell.setText(title); } protected void createButtonsForButtonBar(Composite parent) { Button addButton = createButton(parent, ADD_ID, SResources.getString("b.okNoClose"), false); super.createButtonsForButtonBar(parent); } protected Control createDialogArea(Composite parent) { Composite composite = (Composite) super.createDialogArea(parent); composite.setLayout(WidgetFactory.createGridLayout(2, 10, 10, 10, 10, false)); dirText = new Text(composite, SWT.BORDER); dirText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); activateDropTarget(dirText); Button browse = new Button(composite, SWT.NONE); browse.setText(SResources.getString("b.browse")); browse.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END)); browse.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent s) { Button button = (Button) s.widget; DirectoryDialog dirDialog = new DirectoryDialog(button.getShell(), SWT.NULL); String result; if ((result = dirDialog.open()) != null) { dirText.setText(result); } } }); if (share) { GridData gd = new GridData(GridData.FILL_HORIZONTAL); gd.horizontalSpan = 2; Composite priorityComposite = new Composite(composite, SWT.NONE); priorityComposite.setLayout(WidgetFactory.createGridLayout(2, 0, 0, 10, 0, false)); priorityComposite.setLayoutData(gd); spinner = new Spinner(priorityComposite, SWT.NONE); spinner.setMaximum(999); spinner.setMinimum(0); Label label = new Label(priorityComposite, SWT.NONE); label.setText(SResources.getString("m.d.priority")); } return composite; } protected void buttonPressed(int buttonId) { if (share) priority = spinner.getSelection(); directory = dirText.getText(); super.buttonPressed(buttonId); if (buttonId == ADD_ID) { sendShareCommand(share); dirText.setText(SResources.S_ES); } } public String getDirectory() { return directory; } public int getPriority() { return priority; } private void activateDropTarget(final Text text) { DropTarget dropTarget = new DropTarget(text, DND.DROP_COPY | DND.DROP_DEFAULT | DND.DROP_LINK); final TextTransfer textTransfer = TextTransfer.getInstance(); final FileTransfer fileTransfer = FileTransfer.getInstance(); dropTarget.setTransfer(new Transfer[]{fileTransfer, textTransfer}); dropTarget.addDropListener(new DropTargetAdapter() { public void dragEnter(DropTargetEvent event) { if (event.detail == DND.DROP_DEFAULT) { if ((event.operations & DND.DROP_COPY) != 0) { event.detail = DND.DROP_COPY; } else { event.detail = DND.DROP_NONE; } } // will accept text but prefer to have files dropped for (int i = 0; i < event.dataTypes.length; i++) { if (fileTransfer.isSupportedType(event.dataTypes[i])) { event.currentDataType = event.dataTypes[i]; // files should only be copied if (event.detail != DND.DROP_COPY) { event.detail = DND.DROP_NONE; } break; } } } public void drop(DropTargetEvent event) { if (textTransfer.isSupportedType(event.currentDataType)) { text.append((String) event.data); } if (fileTransfer.isSupportedType(event.currentDataType)) { String[] files = (String[]) event.data; if (files.length > 1) { for (int i = 0; i < files.length; i++) { text.setText(files[i]); directory = files[i]; sendShareCommand(share); text.setText(SResources.S_ES); } } else if (files.length == 1) { text.append(files[0]); } } } }); } }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?