⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 resulttablemenulistener.java

📁 SANCHO
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * Copyright (C) 2004-2005 Rutger M. Ovidius for use with the sancho project. * See LICENSE.txt for license information. */package sancho.view.search.result;import java.util.Arrays;import java.util.Timer;import java.util.TimerTask;import org.eclipse.jface.action.Action;import org.eclipse.jface.action.IMenuListener;import org.eclipse.jface.action.IMenuManager;import org.eclipse.jface.action.MenuManager;import org.eclipse.jface.action.Separator;import org.eclipse.jface.viewers.SelectionChangedEvent;import org.eclipse.jface.viewers.TableViewer;import org.eclipse.swt.SWT;import org.eclipse.swt.custom.CLabel;import org.eclipse.swt.custom.CTabItem;import org.eclipse.swt.events.DisposeEvent;import org.eclipse.swt.events.DisposeListener;import org.eclipse.swt.events.MouseAdapter;import org.eclipse.swt.events.MouseEvent;import org.eclipse.swt.events.MouseTrackAdapter;import org.eclipse.swt.events.SelectionAdapter;import org.eclipse.swt.events.SelectionEvent;import org.eclipse.swt.graphics.Font;import org.eclipse.swt.graphics.FontData;import org.eclipse.swt.graphics.GC;import org.eclipse.swt.graphics.Point;import org.eclipse.swt.graphics.Rectangle;import org.eclipse.swt.layout.GridData;import org.eclipse.swt.widgets.Composite;import org.eclipse.swt.widgets.Control;import org.eclipse.swt.widgets.Display;import org.eclipse.swt.widgets.Event;import org.eclipse.swt.widgets.Label;import org.eclipse.swt.widgets.List;import org.eclipse.swt.widgets.Listener;import org.eclipse.swt.widgets.MessageBox;import org.eclipse.swt.widgets.Shell;import org.eclipse.swt.widgets.Table;import org.eclipse.swt.widgets.TableItem;import org.eclipse.swt.widgets.ToolBar;import org.eclipse.swt.widgets.ToolItem;import org.eclipse.swt.widgets.Widget;import sancho.core.Sancho;import sancho.model.mldonkey.Result;import sancho.view.MainWindow;import sancho.view.SearchTab;import sancho.view.preferences.PreferenceLoader;import sancho.view.utility.SResources;import sancho.view.utility.WidgetFactory;import sancho.view.viewer.ICustomViewer;import sancho.view.viewer.actions.CopyED2KLinkToClipboardAction;import sancho.view.viewer.actions.WebServicesAction;import sancho.view.viewer.table.GTableMenuListener;import sancho.view.viewer.table.GTableView;public class ResultTableMenuListener extends GTableMenuListener {  private CTabItem cTabItem;  public ResultTableMenuListener(GTableView rTableViewer, CTabItem aCTabItem) {    super(rTableViewer);    this.cTabItem = aCTabItem;  }  public void initialize() {    super.initialize();    if (PreferenceLoader.loadBoolean("searchTooltips")) {      final ToolTipHandler toolTipHandler = new ToolTipHandler(gView.getShell());      toolTipHandler.activateHoverHelp(gView.getTable(), (ICustomViewer) gView.getViewer());      gView.getTable().addDisposeListener(new DisposeListener() {        public void widgetDisposed(DisposeEvent e) {          toolTipHandler.dispose();        }      });    }  }  public void selectionChanged(SelectionChangedEvent event) {    collectSelections(event, Result.class);  }  public void menuAboutToShow(IMenuManager menuManager) {    if (selectedObjects.size() > 0) {      menuManager.add(new DownloadAction());      menuManager.add(new ResultDetailAction());      menuManager.add(new Separator());      menuManager.add(new CopyNameAction());      String[] linkList = new String[selectedObjects.size()];      for (int i = 0; i < selectedObjects.size(); i++)        linkList[i] = ((Result) selectedObjects.get(i)).getED2K();      MenuManager clipboardMenu = new MenuManager(SResources.getString("m.d.copyTo"));      clipboardMenu.add(new CopyED2KLinkToClipboardAction(false, linkList));      clipboardMenu.add(new CopyED2KLinkToClipboardAction(true, linkList));      menuManager.add(clipboardMenu);      menuManager.add(new Separator());      Result result = (Result) selectedObjects.get(0);      addWebServicesMenu(menuManager, result.getMd4(), result.getED2K(), result.getSize());    }  }  public boolean downloadResult(final Result result) {    if (!Sancho.hasCollectionFactory())      return true;    boolean force = PreferenceLoader.loadBoolean("searchForceDownload");    if (result.downloaded() && !force) {      Shell shell = ((TableViewer) tableViewer).getTable().getShell();      MessageBox box = new MessageBox(shell, SWT.ICON_INFORMATION | SWT.YES | SWT.NO);      box.setText(SResources.getString("s.alreadyDownloadedTitle"));      box.setMessage(result.getName() + "\n" + SResources.getString("s.alreadyDownloadedText"));      if (box.open() == SWT.YES) {        gView.getCore().getResultCollection().download(result, true);        tableViewer.getTable().getDisplay().timerExec(2000, new Runnable() {          public void run() {            if (tableViewer != null && tableViewer.getTable() != null && !tableViewer.getTable().isDisposed())              tableViewer.update(result, null);          }        });        return true;      }    } else {      gView.getCore().getResultCollection().download(result, force);      tableViewer.getTable().getDisplay().timerExec(2000, new Runnable() {        public void run() {          if (tableViewer != null && tableViewer.getTable() != null && !tableViewer.getTable().isDisposed())            tableViewer.update(result, null);        }      });      return true;    }    return false;  }  public void downloadSingleFile(Result result) {    downloadResult(result);    postDownloadStats(1, SResources.S_ES);  }  // note ...:w  public void downloadSelected() {    if (!Sancho.hasCollectionFactory())      return;    String anErrorString = SResources.S_ES;    int counter = 0;    for (int i = 0; i < selectedObjects.size(); i++) {      Result result = (Result) selectedObjects.get(i);      if (downloadResult(result))        counter++;      else        anErrorString += (result.getName() + "\n");    }    postDownloadStats(counter, anErrorString);  }  public void postDownloadStats(int counter, String anErrorString) {    SearchTab searchTab = (SearchTab) cTabItem.getParent().getData();    searchTab.getMainWindow().getStatusline().setText(SResources.getString("s.sl.startedDownload") + counter);  }  private class DownloadAction extends Action {    public DownloadAction() {      super(SResources.getString("s.r.download"));      setImageDescriptor(SResources.getImageDescriptor("down_arrow_green"));    }    public void run() {      downloadSelected();    }  }  private class ResultDetailAction extends Action {    public ResultDetailAction() {      super(SResources.getString("s.r.resultDetails"));      setImageDescriptor(SResources.getImageDescriptor("info"));    }    public void run() {      Result result = (Result) selectedObjects.get(0);      if (result instanceof Result) {        new ResultDetailDialog(gView.getShell(), result).open();      }    }  }  private class CopyNameAction extends Action {    public CopyNameAction() {      super(SResources.getString("s.r.copyName"));      setImageDescriptor(SResources.getImageDescriptor("copy"));    }    public void run() {      String string = SResources.S_ES;      String lSeparator = System.getProperty("line.separator");      for (int i = 0; i < selectedObjects.size(); i++) {        Result result = (Result) selectedObjects.get(i);        if (string.length() > 0)          string += lSeparator;        string += result.getName();      }      MainWindow.copyToClipboard(string);    }  }  private class ToolTipHandler implements IMenuListener {    private Shell tipShell;    private CLabel tipLabelImage;    private Label tipLabelText;    private Widget tipWidget;    private Point tipPosition;    private Composite parent;    private List namesList;    private Point pt;    private Font boldFont;    private ToolBar toolBar;    private Composite namesComposite;    private String fileSize;    private String md4;    private String ed2k;    private int charHeight;    private Result result;    private MenuManager popupMenu;    private Display display;    private Timer timer;    private boolean isVisible;    public ToolTipHandler(final Composite parent) {      this.parent = parent;      this.pt = new Point(0, 0);      GC gc = new GC(parent);      charHeight = gc.getFontMetrics().getHeight();      gc.dispose();      display = parent.getDisplay();      tipShell = new Shell(parent.getShell(), SWT.ON_TOP);      tipShell.addDisposeListener(new DisposeListener() {        public void widgetDisposed(DisposeEvent e) {          if (boldFont != null)            boldFont.dispose();          if (popupMenu != null)            popupMenu.dispose();          if (timer != null)            timer.cancel();        }      });      // Don't close when you press ESC in the namesList      tipShell.addListener(SWT.Close, new Listener() {        public void handleEvent(Event e) {          e.doit = false;        }      });      tipShell.setLayout(WidgetFactory.createGridLayout(1, 2, 2, 0, 0, false));      setColors(tipShell);      tipLabelImage = new CLabel(tipShell, SWT.NONE);      FontData[] fontDataArray = tipLabelImage.getFont().getFontData();      for (int i = 0; i < fontDataArray.length; i++)        fontDataArray[i].setStyle(SWT.BOLD);      boldFont = new Font(null, fontDataArray);      tipLabelImage.setFont(boldFont);      tipLabelImage.setAlignment(SWT.LEFT);      setColors(tipLabelImage);      tipLabelImage          .setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.HORIZONTAL_ALIGN_BEGINNING));      createSeparator(tipShell);      tipLabelText = new Label(tipShell, SWT.NONE);      setColors(tipLabelText);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -