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

📄 tableview.java

📁 这是一个基于java编写的torrent的P2P源码
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
							return;
						MenuItem[] items = menu.getItems();
						for (int i = 0; i < items.length; i++) {
							items[i].dispose();
						}
					}
				});
			}

			public void menuShown(MenuEvent e) {
				MenuItem[] items = menu.getItems();
				for (int i = 0; i < items.length; i++)
					items[i].dispose();

        bShown = true;

      	fillMenu(menu);
        addThisColumnSubMenu(getColumnNo(iMouseX));
			}
    });

    return menu;
  }

  /** Fill the Context Menu with items.  Called when menu is about to be shown.
   *
   * By default, a "Edit Columns" menu and a Column specific menu is set up.
   *
   * @param menu Menu to fill
   */
  public void fillMenu(Menu menu) {
    final MenuItem itemChangeTable = new MenuItem(menu, SWT.PUSH);
    Messages.setLanguageText(itemChangeTable, "MyTorrentsView.menu.editTableColumns");
    Utils.setMenuItemImage(itemChangeTable, "columns");
    
    itemChangeTable.addListener(SWT.Selection, new Listener() {
      public void handleEvent(Event e) {
      	new TableColumnEditorWindow(table.getShell(), tableColumns,
						TableStructureEventDispatcher.getInstance(sTableID));
      }
    });
    
    menuThisColumn = new Menu(tableComposite.getShell(), SWT.DROP_DOWN);
    final MenuItem itemThisColumn = new MenuItem(menu, SWT.CASCADE);
    itemThisColumn.setMenu(menuThisColumn);

    // Add Plugin Context menus..
 	boolean	enable_items = table != null && table.getSelection().length > 0;
    
    TableContextMenuItem[] items = TableContextMenuManager.getInstance()
				.getAllAsArray(sTableID);
		if (items.length > 0) {
			new MenuItem(menu, SWT.SEPARATOR);
			addTableContextMenuItems(items, menu, true, enable_items);

    }
  }
  
  private void addTableContextMenuItems(org.gudy.azureus2.plugins.ui.menus.MenuItem[] items, Menu parent, boolean prev_was_separator, boolean enable_items) {
	for (int i = 0; i < items.length; i++) {
		final TableContextMenuItemImpl contextMenuItem = (TableContextMenuItemImpl) items[i];

		final int style = contextMenuItem.getStyle();

		final int swt_style;

		boolean this_is_separator = false;

		// Do we have any children? If so, we override any manually defined
		// style.
		boolean is_container = false;
		org.gudy.azureus2.plugins.ui.menus.MenuItem [] child_items = contextMenuItem.getItems();
		
		if (style == TableContextMenuItem.STYLE_MENU) {
			swt_style = SWT.CASCADE;
			is_container = true;
		}
		else if (style == TableContextMenuItem.STYLE_PUSH) {
			swt_style = SWT.PUSH;
		} else if (style == TableContextMenuItem.STYLE_CHECK) {
			swt_style = SWT.CHECK;
		} else if (style == TableContextMenuItem.STYLE_RADIO) {
			swt_style = SWT.RADIO;
		} else if (style == TableContextMenuItem.STYLE_SEPARATOR) {
			this_is_separator = true;
			swt_style = SWT.SEPARATOR;
		} else {
			swt_style = SWT.PUSH;
		}

		// skip contiguous separators

		if (prev_was_separator && this_is_separator) {
			continue;
		}

		// skip trailing separator

		if (this_is_separator && i == items.length - 1) {
			continue;
		}

		prev_was_separator = this_is_separator;
		
		final MenuItem menuItem = new MenuItem(parent, swt_style);

		if (swt_style == SWT.SEPARATOR) {
			continue;
		}
		
		menuItem.addListener(SWT.Selection, new SelectedTableRowsListener() {
			public boolean run(TableRowCore[] rows) {
				if (swt_style == SWT.CHECK || swt_style == SWT.RADIO) {
					if (!menuItem.isDisposed()) {
						contextMenuItem.setData(new Boolean(menuItem.getSelection()));
					}
				}

				contextMenuItem.invokeListeners(rows);
				return true;
			}
		});
		
		if (is_container) {
			Menu this_menu = new Menu(getComposite().getShell(), SWT.DROP_DOWN);
			menuItem.setMenu(this_menu);
			this.addTableContextMenuItems(child_items, this_menu, false, enable_items);
		}

		if (enable_items) {
			contextMenuItem.invokeMenuWillBeShownListeners(getSelectedRows());

			if (style == TableContextMenuItem.STYLE_CHECK
					|| style == TableContextMenuItem.STYLE_RADIO) {

				menuItem.setSelection(((Boolean) contextMenuItem.getData())
						.booleanValue());
			}
		}
		
		String custom_title = contextMenuItem.getText();
		menuItem.setText(custom_title);

		Graphic g = contextMenuItem.getGraphic();
		if (g instanceof UISWTGraphic) {
			Utils.setMenuItemImage(menuItem, ((UISWTGraphic) g).getImage());
		}
 
		menuItem.setEnabled(enable_items && contextMenuItem.isEnabled());

	}
 }
  
  /**
   * SubMenu for column specific tasks. 
   *
   * @param iColumn Column # that tasks apply to.
   */
  private void addThisColumnSubMenu(int iColumn) {
    MenuItem item;

    if (menuThisColumn == null || menuThisColumn.isDisposed())
    	return;

    // Dispose of the old items
    MenuItem[] oldItems = menuThisColumn.getItems();
    for (int i = 0; i < oldItems.length; i++) {
      oldItems[i].dispose();
    }

    item = menuThisColumn.getParentItem();
    if (iColumn == -1) {
      item.setEnabled(false);
      item.setText(MessageText.getString("GenericText.column"));
      return;
    }

    item.setEnabled(true);

    menu.setData("ColumnNo", new Long(iColumn));

    TableColumn tcColumn = table.getColumn(iColumn);
    item.setText("'" + tcColumn.getText() + "' " + 
                 MessageText.getString("GenericText.column"));

    String sColumnName = (String)tcColumn.getData("Name");
    if (sColumnName != null) {
      addThisColumnSubMenu(sColumnName, menuThisColumn);
    }

    if (menuThisColumn.getItemCount() > 0) {
      new MenuItem(menuThisColumn, SWT.SEPARATOR);
    }

    item = new MenuItem(menuThisColumn, SWT.PUSH);
    Messages.setLanguageText(item, "MyTorrentsView.menu.thisColumn.sort");
    item.addListener(SWT.Selection, new Listener() {
      public void handleEvent(Event e) {
        int iColumn = ((Long)menu.getData("ColumnNo")).intValue();
        table.getColumn(iColumn).notifyListeners(SWT.Selection, new Event());
      }
    });

    item = new MenuItem(menuThisColumn, SWT.PUSH);
    Messages.setLanguageText(item, "MyTorrentsView.menu.thisColumn.remove");
    item.setEnabled(false);

    item = new MenuItem(menuThisColumn, SWT.PUSH);
    Messages.setLanguageText(item, "MyTorrentsView.menu.thisColumn.toClipboard");
    item.addListener(SWT.Selection, new Listener() {
      public void handleEvent(Event e) {
        String sToClipboard = "";
        int iColumn = ((Long)menu.getData("ColumnNo")).intValue();
        TableItem[] tis = table.getSelection();
        for (int i = 0; i < tis.length; i++) {
          if (i != 0) sToClipboard += "\n";
          sToClipboard += tis[i].getText(iColumn);
        }
        new Clipboard(mainComposite.getDisplay()).setContents(new Object[] { sToClipboard }, 
                                                      new Transfer[] {TextTransfer.getInstance()});
      }
    });

    // Add Plugin Context menus..
    TableColumnCore tc = (TableColumnCore)tcColumn.getData("TableColumnCore");
    TableContextMenuItem[] items = tc.getContextMenuItems();
    if (items.length > 0) {
      new MenuItem(menuThisColumn, SWT.SEPARATOR);

      for (int i = 0; i < items.length; i++) {
        final TableContextMenuItemImpl contextMenuItem = (TableContextMenuItemImpl)items[i];
        final MenuItem menuItem = new MenuItem(menuThisColumn, SWT.PUSH);

        Messages.setLanguageText(menuItem, contextMenuItem.getResourceKey());
        menuItem.addListener(SWT.Selection, new SelectedTableRowsListener() {
          public boolean run(TableRowCore[] rows) {
            contextMenuItem.invokeListeners(rows);
            return true;
          }
        });
      }
    }
  }
  
  /** Create a SubMenu for column specific tasks.  Everytime the user opens
   * the context menu, the "This Column" submenu is cleared, and this function
   * is called to refill it.
   *
   * @param sColumnName The name of the column the user clicked on
   * @param menuThisColumn the menu to fill with MenuItems
   */
  public void addThisColumnSubMenu(String sColumnName, Menu menuThisColumn) {
/*  // Template code
    if (sColumnName.equals("xxx")) {
      item = new MenuItem(menuThisColumn, SWT.PUSH);
      Messages.setLanguageText(item, "xxx.menu.xxx");
      item.setImage(ImageRepository.getImage("xxx"));
      item.addListener(SWT.Selection, new Listener() {
        public void handleEvent(Event e) {
          // Code here
        }
      });
*/
  }

  /** IView.getComposite()
   * @return the composite for this TableView
   */
  public Composite getComposite() {
    return mainComposite;
  }
  
  public Composite getTableComposite() {
    return tableComposite;
  }

  /** IView.refresh(), called when the GUI needs an update */
  public final void refresh() {
  	refresh(false);
  }

  long count = 0;

  public void refresh(boolean bForceSort) {
  	// don't refresh while there's no table
  	if (table == null)
  		return;
  	
  	refreshTable(bForceSort);

  	if (bEnableTabViews && tabFolder != null && !tabFolder.isDisposed()
				&& !tabFolder.getMinimized())
  		refreshSelectedSubView();
  	// TODO: Refresh folder titles
  }
  
  public IView getActiveSubView() {
  	if (!bEnableTabViews || tabFolder == null || tabFolder.isDisposed()
				|| tabFolder.getMinimized())
  		return null;

		CTabItem item = tabFolder.getSelection();
		if (item != null) {
			return (IView)item.getData("IView");
		}

		return null;
  }
  
	public void refreshSelectedSubView() {
		IView view = getActiveSubView();
		if (view != null)
			view.refresh();
	}

  public void refreshTable(boolean bForceSort) {
  	// don't refresh while there's no table
  	if (table == null)
  		return;

  	try{
  		this_mon.enter();

	    if(getComposite() == null || getComposite().isDisposed())
	      return;
	
	    if (checkColumnWidthsEvery != 0 && 
	        (loopFactor % checkColumnWidthsEvery) == 0) {
	      TableColumn[] tableColumnsSWT = table.getColumns();
	      for (int i = 0; i < tableColumnsSWT.length; i++) {
	        TableColumnCore tc = (TableColumnCore)tableColumnsSWT[i].getData("TableColumnCore");
	        if (tc != null && tc.getWidth() != tableColumnsSWT[i].getWidth()) {
	          tc.setWidth(tableColumnsSWT[i].getWidth());
	
	          int columnNumber = table.indexOf(tableColumnsSWT[i]);
	          locationChanged(columnNumber);
	        }
	      }
	    }
	
	    long lTimeStart = System.currentTimeMillis();
	    
	    count = 0;
	    
	    final boolean bDoGraphics = (loopFactor % graphicsUpdate) == 0;
	    final boolean bWillSort = bForceSort || (reOrderDelay != 0) && ((loopFactor % reOrderDelay) == 0); 
	    //System.out.println("Refresh.. WillSort? " + bWillSort);
	    
			if (bWillSort) {
				if (bForceSort) {
					sortColumn.setLastSortValueChange(SystemTime.getCurrentTime());
				}
				sortColumn(true);
			}
	
	    lTimeStart = System.currentTimeMillis();
	    
	    //Refresh all visible items in table...
	    runForAllRows(new GroupTableRowVisibilityRunner() {
	      public void run(TableRowCore row, boolean bVisible) {
      		row.refresh(bDoGraphics, bVisible);
	      }
	    });

			if (DEBUGADDREMOVE) {
		    long lTimeDiff = (System.currentTimeMillis() - lTimeStart);
				if (lTimeDiff > 500)
					debug(lTimeDiff + "ms to refresh rows");
			}
	
	    loopFactor++;
  	}finally{
  		
  		this_mon.exit();
  	}
  }
  
  private void refreshVisibleRows() {
    if (getComposite() == null || getComposite().isDisposed())
      return;    
    
    runForVisibleRows(new GroupTableRowRunner() {
      public void run(TableRowCore row) {
        row.setAlternatingBGColor(true);
        row.refresh(false, true);
      }
    });
  }
  
  
  /**
   * Process the queue of datasources to be added and removed
   *
   */
  public void processDataSourceQueue() {
		Object[] dataSourcesAdd = null;

⌨️ 快捷键说明

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