瀏覽代碼

Allow de-/capturing of multiple selected devices

Andreas T. Meyer-Berg 6 年之前
父節點
當前提交
32ffc3064a
共有 1 個文件被更改,包括 70 次插入31 次删除
  1. 70 31
      src/main/java/de/tu_darmstadt/tk/SmartHomeNetworkSim/view/VisualisationInteractor.java

+ 70 - 31
src/main/java/de/tu_darmstadt/tk/SmartHomeNetworkSim/view/VisualisationInteractor.java

@@ -283,9 +283,6 @@ public class VisualisationInteractor implements MouseInputListener,
 		default:
 			break;
 		}
-		
-		
-
 	}
 
 	@Override
@@ -874,45 +871,87 @@ public class VisualisationInteractor implements MouseInputListener,
 					rightClickMenu.add(itemCreateConnection,editCreateConnectionIndex);
 				}
 				itemCreateLink.setText("Create Link");
+				itemCapture.removeAll();
 				if(controller.getSettingsController().getConfigurationManager().getSelectionModel().selectedDevices.contains(clickedOn)){
 					itemDeleteSelected.setEnabled(true);
 					itemCreateLink.setEnabled(true);
 					itemCreateConnection.setEnabled(true);
+					
+					/**
+					 * Capture multiple
+					 */
+					for(PacketCollector collector:captureController.getPacketCollectors()){
+						JMenuItem itemCaptureDevice = new JMenuItem();
+						String captureDeviceText = "";
+						if(collector.getPacketAlgorithm()==null){
+							captureDeviceText += "Null: ";
+						}else{
+							captureDeviceText += collector.getPacketAlgorithm().getClass().getSimpleName()+": ";
+						}
+						if(collector.getDevices().contains(clickedOn)){
+							captureDeviceText += "stop capturing all";
+							itemCaptureDevice.addActionListener(a->{
+								for(SmartDevice d: controller.getSettingsController().getConfigurationManager().getSelectionModel().selectedDevices)
+									captureController.removeDeviceFromCollector(collector, d);
+							});
+						}else{
+							captureDeviceText += "start capturing all";
+							itemCaptureDevice.addActionListener(a->{
+								for(SmartDevice d: controller.getSettingsController().getConfigurationManager().getSelectionModel().selectedDevices)
+									captureController.addDeviceToCollector(collector, d);
+							});
+						}
+						itemCaptureDevice.setText(captureDeviceText);
+						itemCapture.add(itemCaptureDevice);					
+					}
+					itemCapture.setEnabled(true);
+					JMenuItem newCapture = new JMenuItem("Create new PacketCapturer");
+					newCapture.addActionListener(a->{
+						PacketCollector c = new PacketCollector();
+						for(SmartDevice d: controller.getSettingsController().getConfigurationManager().getSelectionModel().selectedDevices)
+							c.addDevice(d);
+						EditPacketSniffer popUp = new EditPacketSniffer(controller, panel, c, false);
+						popUp.setVisible(true);
+					});
+					itemCapture.add(newCapture);
 				}
 				else{
 					itemDeleteSelected.setEnabled(false);
 					itemCreateLink.setEnabled(false);
 					itemCreateConnection.setEnabled(false);
-				}
-				
-				itemCapture.removeAll();
-				for(PacketCollector collector:captureController.getPacketCollectors()){
-					JMenuItem itemCaptureDevice = new JMenuItem();
-					String captureDeviceText = "";
-					if(collector.getPacketAlgorithm()==null){
-						captureDeviceText += "Null: ";
-					}else{
-						captureDeviceText += collector.getPacketAlgorithm().getClass().getSimpleName()+": ";
-					}
-					if(collector.getDevices().contains(clickedOn)){
-						captureDeviceText += "stop capture";
-						itemCaptureDevice.addActionListener(a->captureController.removeDeviceFromCollector(collector, clickedOn));
-					}else{
-						captureDeviceText += "start capture";
-						itemCaptureDevice.addActionListener(a->captureController.addDeviceToCollector(collector, clickedOn));
+					/**
+					 * Capture Single Device
+					 */
+					for(PacketCollector collector:captureController.getPacketCollectors()){
+						JMenuItem itemCaptureDevice = new JMenuItem();
+						String captureDeviceText = "";
+						if(collector.getPacketAlgorithm()==null){
+							captureDeviceText += "Null: ";
+						}else{
+							captureDeviceText += collector.getPacketAlgorithm().getClass().getSimpleName()+": ";
+						}
+						if(collector.getDevices().contains(clickedOn)){
+							captureDeviceText += "stop capture";
+							itemCaptureDevice.addActionListener(a->captureController.removeDeviceFromCollector(collector, clickedOn));
+						}else{
+							captureDeviceText += "start capture";
+							itemCaptureDevice.addActionListener(a->captureController.addDeviceToCollector(collector, clickedOn));
+						}
+						itemCaptureDevice.setText(captureDeviceText);
+						itemCapture.add(itemCaptureDevice);					
 					}
-					itemCaptureDevice.setText(captureDeviceText);
-					itemCapture.add(itemCaptureDevice);					
+					itemCapture.setEnabled(true);
+					JMenuItem newCapture = new JMenuItem("Create new PacketCapturer");
+					newCapture.addActionListener(a->{
+						PacketCollector c = new PacketCollector();
+						c.addDevice(clickedOn);
+						EditPacketSniffer popUp = new EditPacketSniffer(controller, panel, c, false);
+						popUp.setVisible(true);
+					});
+					itemCapture.add(newCapture);
 				}
-				itemCapture.setEnabled(true);
-				JMenuItem newCapture = new JMenuItem("Create new PacketCapturer");
-				newCapture.addActionListener(a->{
-					PacketCollector c = new PacketCollector();
-					c.addDevice(clickedOn);
-					EditPacketSniffer popUp = new EditPacketSniffer(controller, panel, c, false);
-					popUp.setVisible(true);
-				});
-				itemCapture.add(newCapture);
+				
+				
 			}
 			// Show the RightClickMenu
 			rightClickMenu.show(panel, mousePos.x, mousePos.y);