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

📄 serverlisttable.java

📁 JMule是一个基于Java开发
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
			    	 //int[] selected_rows = ( _server_manager.getServersCount() !=0 ) ? getSelectedRows() : new int[0];			    	 //int[] selected_rows = getSelectedRows();			    	 //for(int i : selected_rows) {			    	//	 System.out.println("Index of selected row = " + i);			    		// System.out.println("Row model index = " + convertRowIndexToModel(i));			    	// }			    	// Server[] servers = getServersByIndexes(selected_rows);			    	// for(Server server : servers) {			    	//	 System.out.println(server);			    	// }			    	JPopupMenu popup_menu = null;			 		switch( whichCondition() ) {			 					 		  case A : popup_menu = new JPopupMenu();	 		                   popup_menu.add(connect_to);			 		           popup_menu.add(disconnect);			 		           popup_menu.addSeparator();			 		           popup_menu.add(add);	 		                   popup_menu.add(remove_selected);	 		                   popup_menu.add(remove_all);			 		           popup_menu.addSeparator();			 		           popup_menu.add(copy_ed2k_links);			 		           popup_menu.add(paste_ed2k_links);			 		           popup_menu.addSeparator();			 		           popup_menu.add(add_to_static_list);			 		           popup_menu.add(remove_from_static_list);			 		          // popup_menu.addSeparator();			 		          // popup_menu.add(column_setup);			 		           popup_menu.addSeparator();			 		           popup_menu.add(properties); break;			 		  case B : popup_menu = new JPopupMenu();	 		                   popup_menu.add(remove_selected);	 		                   popup_menu.add(remove_all);	 		                   popup_menu.add(add);	 		                   popup_menu.add(disconnect);			 		           popup_menu.addSeparator();	 		                   popup_menu.add(copy_ed2k_links);	 		                   popup_menu.add(paste_ed2k_links);			 		           popup_menu.addSeparator();			 		           popup_menu.add(add_to_static_list);			 		           popup_menu.add(remove_from_static_list);			 		         //  popup_menu.addSeparator();	 		                 //  popup_menu.add(column_setup); 			 		           break; 			 		  case D : popup_menu = new JPopupMenu();			 		           popup_menu.add(connect_to);			 		           popup_menu.addSeparator();	 		                   popup_menu.add(add);	 		                   popup_menu.add(remove_selected);	 		                   popup_menu.add(remove_all);	 		                   popup_menu.addSeparator();	 		                   popup_menu.add(copy_ed2k_links);	 		                   popup_menu.add(paste_ed2k_links);	 		                   	 		                   popup_menu.addSeparator();			 		           popup_menu.add(add_to_static_list);			 		           popup_menu.add(remove_from_static_list);			 		        //   popup_menu.addSeparator();	 		                //   popup_menu.add(column_setup);	 		                   popup_menu.addSeparator();	 		                   popup_menu.add(properties); break;			 		  case E : popup_menu = new JPopupMenu();			 		           popup_menu.add(remove_selected);	 		                   popup_menu.add(add);	 		                   popup_menu.add(remove_all);	 		                   popup_menu.addSeparator();	 		                   popup_menu.add(copy_ed2k_links);	 		                   popup_menu.add(paste_ed2k_links);	 		                   popup_menu.addSeparator();	 		                   popup_menu.add(add_to_static_list);			 		           popup_menu.add(remove_from_static_list);			 		        //   popup_menu.addSeparator();	 		               //    popup_menu.add(column_setup); 			 		           break;			 		  case F : popup_menu = new JPopupMenu();	 		                   popup_menu.add(add);	 		                   popup_menu.add(paste_ed2k_links);	 		                   popup_menu.addSeparator();	 		                   popup_menu.add(column_setup); break;			 		  case G : popup_menu = new JPopupMenu();			 		           popup_menu.add(remove_selected);	 		                   popup_menu.add(add);	 		                   popup_menu.add(remove_all);	 		                   popup_menu.add(disconnect);	 		                   popup_menu.addSeparator();	 		                   popup_menu.add(copy_ed2k_links);	 		                   popup_menu.add(paste_ed2k_links);	 		                   popup_menu.addSeparator();			 		           popup_menu.add(add_to_static_list);			 		           popup_menu.add(remove_from_static_list);			 		        //   popup_menu.addSeparator();	 		                 //  popup_menu.add(column_setup);	 		                   popup_menu.addSeparator();	 		                   popup_menu.add(properties); break;			 		  case H : popup_menu = new JPopupMenu();			 		           popup_menu.add(remove_selected);	 		                   popup_menu.add(add);	 		                   popup_menu.add(remove_all);	 		                   popup_menu.add(disconnect);	 		                   popup_menu.addSeparator();	 		                   popup_menu.add(copy_ed2k_links);	 		                   popup_menu.add(paste_ed2k_links);	 		                   popup_menu.addSeparator();			 		           popup_menu.add(add_to_static_list);			 		           popup_menu.add(remove_from_static_list);			 		        //   popup_menu.addSeparator();	 		                //   popup_menu.add(column_setup); break;			 		 			 		}			 					 		// set enabled/disabled for static list commands			 		Server[] selected_servers = getSelectedServers();			 		add_to_static_list.setEnabled(true);			 		remove_from_static_list.setEnabled(true);			 		boolean add_to_static_enabled = true;			 		boolean remove_from_static_enabled = true;			 		for(Server server : selected_servers) {			 			if(server.isStatic()) {			 				add_to_static_enabled = false;			 			} else {			 				remove_from_static_enabled = false;			 			}			 		}			 		if( ( add_to_static_enabled == false ) && ( remove_from_static_enabled != false ) ) {				 			add_to_static_list.setEnabled(false);			 		}			 		if( ( add_to_static_enabled != false ) && ( remove_from_static_enabled == false ) ) {			 			remove_from_static_list.setEnabled(false);			 		}			    	popup_menu.show(e.getComponent(), e.getX(), e.getY());			     }			 }		}		this.addMouseListener(new PopupListener());			packColumns(this,2);				if(this.getModel().getRowCount() != 0 ) this.setRowSelectionInterval(0,0);	}		private enum ServersOp {		MAKE_SELECTED_STATIC,		MAKE_SELECTED_NON_STATIC,		REMOVE_SELECTED_FROM_LIST,		REMOVE_ALL_FROM_LIST,		CONNECT_TO	}		private void executeSelectedServersOp(ServersOp operation) {	  final ServersOp foperation = operation;		  (new JMThread(new JMRunnable() {		public void JMRun() {		  if(foperation == ServersOp.REMOVE_ALL_FROM_LIST) {			  _server_manager.clearServerList();			  return;		  }		  Server[] selected_servers = getSelectedServers();		  // if the foperation == ServersOp.CONNECT_TO we suppose that only one server is selected		  // that is located at selected_servers[0]		  if(foperation == ServersOp.CONNECT_TO) {			  try {				_server_manager.connect(selected_servers[0]);			} catch (Throwable t) {				t.printStackTrace();			}		  }		  for(Server server : selected_servers) {				  switch( foperation ) {			    case MAKE_SELECTED_STATIC : if( !server.isStatic() ) server.setStatic(true); break;			    case MAKE_SELECTED_NON_STATIC : if( server.isStatic() ) server.setStatic(false); break;		        case REMOVE_SELECTED_FROM_LIST : _server_manager.removeServer(server); break;	          }	      }	      if( ( foperation == ServersOp.MAKE_SELECTED_STATIC ) || 	    	  ( foperation == ServersOp.MAKE_SELECTED_NON_STATIC ) ) {			  try {				 _server_manager.storeServerList();			  }catch(Throwable t) {				 t.printStackTrace();			  }	      }	   }	  })).start();	}		// we override the getSelectedRows from JTable because it returns the last selected rows when the table has 0 rows	// if the JTable is cleared, it should return 0 selected rows, maybe a bug or my misunderstanding	public int[] getSelectedRows() {		return ( ( _server_manager.getServersCount() !=0 ) ? super.getSelectedRows() : new int[0] );	}		private Server[] getServersByIndexes(int[] indexes) {		//for(int index : indexes) {		//	System.out.println("Index=>" + index);		//}		Server[] result = new Server[indexes.length];		int k = 0;		for(int i : indexes) {			int j = 0;			for(Server server : _server_manager.getServers()) {				if( j == this.convertRowIndexToModel(i) ) {					result[k++] = server;					break;				}				++j;			}		}		//for(Server server : result) {		//	System.out.println(server);		//}		return result;	}		private boolean connectedServerIn(Server[] servers) {		Server connected_server = _server_manager.getConnectedServer();		for(Server server : servers) {			if( server == connected_server ) return true;		}		return false;	}		private Server[] getSelectedServers() {				return getServersByIndexes(  this.getSelectedRows() );	}		/*	 * ------------------------------------------------------------------------------------	 *                    |   CONNECTED       DISCONNECTED      CONNECTED SELECTED	 * ------------------------------------------------------------------------------------          	 *  ONE_SELECTED      |      A               D                   G	 *                    |	 *  MULTIPLE_SELECTED |      B               E                   H	 *                    |	 *  VOID_LIST         |      *               F                   *	 *                    |	 * 	 *   A,B,D,E,F,G,H - conditions	 *   * - can't be	 *   	 *   Add Ac1	 *   Remove selected Ac2	 *   Remove all Ac3	 *   Copy ED2K Links Ac4	 *   Paste ED2K Links Ac5 	 *   Connect Ac6	 *   Disconnect Ac7	 *   Column setup Ac8	 *   Properties Ac9	 * 	 *     |  Ac1   Ac2   Ac3   Ac4   Ac5   Ac6   Ac7   Ac8   Ac9	 * --------------------------------------------------------------  	 *   A |  Yes   Yes   Yes   Yes   Yes   Yes   Yes   Yes   Yes	 *     |	 *   B |  Yes   Yes   Yes   Yes   Yes    -    Yes   Yes    -	 *     |	 *   D |  Yes   Yes   Yes   Yes   Yes   Yes    -    Yes   Yes	 *     |	 *   E |  Yes   Yes   Yes   Yes   Yes    -     -    Yes    -	 *     |	 *   F |  Yes    -     -     -    Yes    -     -    Yes    -	 *     |	 *   G |  Yes   Yes   Yes   Yes   Yes    -    Yes   Yes   Yes	 *     |	 *   H |  Yes   Yes   Yes   Yes   Yes    -    Yes   Yes    -	 *     |	 */    		private ConditionType whichCondition() {		ServerManager _server_manager = ServerManagerFactory.getInstance();		Server connected_server = _server_manager.getConnectedServer();		int[] selected_rows = this.getSelectedRows();		Server[] servers = getServersByIndexes( selected_rows );				if( ( connected_server != null ) && ( selected_rows.length == 1 ) && ( servers[0] != connected_server ) )		    return ConditionType.A;	    if( ( connected_server != null ) && ( selected_rows.length > 1 ) && ( !connectedServerIn(servers) ) ) 			return ConditionType.B;		if( ( connected_server == null ) && ( selected_rows.length == 1) ) 			return ConditionType.D;    		if( ( connected_server == null ) && ( selected_rows.length > 1 ) )			return ConditionType.E;   		if( ( connected_server == null ) && ( this.getRowCount() == 0 ) ) 			return ConditionType.F;		if( ( connected_server != null ) && ( selected_rows.length == 1 ) && ( servers[0] == connected_server ) )			return ConditionType.G;		if( ( connected_server != null ) && ( selected_rows.length > 1 ) && ( connectedServerIn(servers) ) )			return ConditionType.H;				return null;	}		private enum ConditionType  {           A, B, D, E, F, G, H	}		/**	 * @see http://jug.org.ua/wiki/display/JavaAlmanac/Packing+a+Column+of+a+JTable+Component	 */	public void packColumns(JTable table, int margin) {        for (int c=0; c<table.getColumnCount(); c++) {            packColumn(table, c, 2);        }    }        // Sets the preferred width of the visible column specified by vColIndex. The column    // will be just wide enough to show the column head and the widest cell in the column.    // margin pixels are added to the left and right    // (resulting in an additional width of 2*margin pixels).    public void packColumn(JTable table, int vColIndex, int margin) {        TableModel model = table.getModel();        DefaultTableColumnModel colModel = (DefaultTableColumnModel)table.getColumnModel();        TableColumn col = colModel.getColumn(vColIndex);        int width = 0;            // Get width of column header        TableCellRenderer renderer = col.getHeaderRenderer();        if (renderer == null) {            renderer = table.getTableHeader().getDefaultRenderer();        }        Component comp = renderer.getTableCellRendererComponent(            table, col.getHeaderValue(), false, false, 0, 0);        width = comp.getPreferredSize().width;            // Get maximum width of column data        for (int r=0; r<table.getRowCount(); r++) {            renderer = table.getCellRenderer(r, vColIndex);            comp = renderer.getTableCellRendererComponent(                table, table.getValueAt(r, vColIndex), false, false, r, vColIndex);            width = Math.max(width, comp.getPreferredSize().width);        }            // Add margin        width += 2*margin;            // Set the width        col.setPreferredWidth(width);    }	}

⌨️ 快捷键说明

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