MGG ( Microbetag Gui )

Logo

MGG Progress Documentation

View the Project on GitHub ermismd/MGG

WEEK 15 & WEEK 16

  1. MGGEdgePanel: Displays and filters edge-related information within MGGCytoPanel.
  2. ShowResultsPanel: Dynamically supplies relevant network data to MGGCytoPanel.

MGGEdgePanel



		          public class MGGEdgePanel extends AbstractMggPanel {
		          	
		          	JButton fetchEdges;
		          	JPanel subScorePanel;
		          	JPanel scorePanel;
		          	JButton deleteEdges;
		          	private Map<CyNetwork, Map<String, Boolean> >  colors;
		          	private JSlider scoreSlider;
		          	
		          	public MGGEdgePanel(final MGGManager manager) {
		          		super(manager);
		          		filters.get(currentNetwork).put("flashweave-score", new HashMap<> ());
		          
		          		colors = new HashMap<> ();
		          		colors.put(currentNetwork, new HashMap<> ());
		          
		          		init();
		          		revalidate();
		          		repaint();
		             }
		             
		          	private void init() {
		          		setLayout(new GridBagLayout());
		          		{
		          			EasyGBC c = new EasyGBC();
		          		
		          			JComponent scoreSlider = createFilterSlider("flashweave-score", "flashweave-score", currentNetwork, true, 100.0);
		          			{
		          				scorePanel = new JPanel();
		          				scorePanel.setLayout(new GridBagLayout());
		          				EasyGBC d = new EasyGBC();
		          				scorePanel.add(scoreSlider, d.anchor("northwest").expandHoriz());
		          				
		          				JPanel controlPanel = createControlPanel();
		          				controlPanel.setBorder(BorderFactory.createEmptyBorder(0,10,0,0));
		          				scorePanel.add(controlPanel, d.anchor("west").down().noExpand());				
		          			}
		          			add(scorePanel, c.down().anchor("west").expandHoriz());
		          
		          			/*
		          			 * { subScorePanel = new JPanel(); subScorePanel.setLayout(new GridBagLayout());
		          			 * EasyGBC d = new EasyGBC(); subScorePanel.add(createSubScorePanel(),
		          			 * d.anchor("west").expandHoriz()); subScorePanel.add(new JPanel(),
		          			 * d.down().anchor("west").expandBoth()); }
		          			 * 
		          			 * JScrollPane scrollPane = new JScrollPane(subScorePanel,
		          			 * JScrollPane.VERTICAL_SCROLLBAR_NEVER,
		          			 * JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
		          			 * 
		          			 * add(scrollPane, c.down().anchor("west").expandBoth()); // add(new JPanel(),
		          			 * c.down().anchor("west").expandBoth());
		          			 */		}
		          		
		          	}
		          	
		          	private JPanel createControlPanel() {
		          		JPanel controlPanel = new JPanel();
		          		GridLayout layout = new GridLayout(2,2);
		          		//layout.setVgap(0);
		          		controlPanel.setLayout(layout);
		          		{
		          			fetchEdges = new JButton("Fetch extra edges");
		          			fetchEdges.setToolTipText("Decrease the network score to the chosen .");
		          			fetchEdges.setFont(labelFont);
		          			fetchEdges.setEnabled(false);
		          			controlPanel.add(fetchEdges);
		          			fetchEdges.addActionListener(new ActionListener() {
		          				public void actionPerformed(ActionEvent e) {
		          					if (filters.containsKey(currentNetwork)
		          							&& filters.get(currentNetwork).containsKey("flashweave-score")
		          							&& filters.get(currentNetwork).get("flashweave-score").containsKey("flashweave-score")) {
		          						Map<String, Object> args = new HashMap<>();
		          						args.put("network", "current");
		          						args.put("flashweave-score", String.valueOf(filters.get(currentNetwork).get("flashweave-score").get("flashweave-score").doubleValue()));
		          						manager.executeCommand("string", "change flashweave-score", args, null);
		          						fetchEdges.setEnabled(false);
		          					}
		          				}
		          			});
		          		}
		          		{
		          			deleteEdges = new JButton("Delete hidden edges");
		          			deleteEdges.setToolTipText("Increase the network confidence to the chosen score.");
		          			deleteEdges.setFont(labelFont);
		          			deleteEdges.setEnabled(false);
		          			controlPanel.add(deleteEdges);
		          			deleteEdges.addActionListener(new ActionListener() {
		          				public void actionPerformed(ActionEvent e) {
		          					//ChangeConfidenceTaskFactory tf = new ChangeConfidenceTaskFactory(manager);
		          					if (filters.containsKey(currentNetwork)
		          							&& filters.get(currentNetwork).containsKey("flashweave-score")
		          							&& filters.get(currentNetwork).get("flashweave-score").containsKey("flashweave-score")) {
		          						Map<String, Object> args = new HashMap<>();
		          						args.put("network", "current");
		          						args.put("flashweave-score", String.valueOf(filters.get(currentNetwork).get("flashweave-score").get("flashweave-score").doubleValue()));
		          						manager.executeCommand("string", "change flashweave-score", args, null);
		          						deleteEdges.setEnabled(false);
		          					}
		          				}
		          			});
		          		}
		          		controlPanel.setAlignmentX(Component.LEFT_ALIGNMENT);
		          		controlPanel.setMaximumSize(new Dimension(100,100));
		          		return controlPanel;
		          		}
		          	
		          	void undoFilters() {
		          		CyNetworkView view = manager.getCurrentNetworkView();
		          		if (view != null) {
		          			for (View<CyEdge> edge: view.getEdgeViews()) {
		          				edge.clearValueLock(BasicVisualLexicon.EDGE_VISIBLE);
		          			}
		          	
		          		}
		          }
		          
		          	@Override
		          	void doFilter(String type) {
		          		 if ("flashweave-score".equals(type)) {
		          		        CyNetworkView networkView = manager.getCurrentNetworkView();
		          		        if (networkView != null) {
		          		            CyNetwork network = networkView.getModel();
		          		            double minScore = (double) scoreSlider.getValue();
		          
		          		            for (CyEdge edge : network.getEdgeList()) {
		          		                View<CyEdge> edgeView = networkView.getEdgeView(edge);
		          
		          		                if (edgeView != null) {
		          		                    Double edgeScore = network.getRow(edge).get("flashweave-score", Double.class);
		          
		          		                    if (edgeScore != null && edgeScore < minScore) {
		          		                        edgeView.setLockedValue(BasicVisualLexicon.EDGE_VISIBLE, false);
		          		                    } else {
		          		                        edgeView.setLockedValue(BasicVisualLexicon.EDGE_VISIBLE, true);
		          		                    }
		          		                }
		          		            }
		          
		          		            networkView.updateView();
		          		        }
		          		    }
		          		
		          	}
		          
		          	@Override
		          	double initFilter(String type, String text) {
		          		  if ("flashweave-score".equals(type)) {
		          		        try {
		          		            double initialScore = Double.parseDouble(text);
		          		            scoreSlider.setValue((int) initialScore);
		          		            doFilter("flashweave-score");
		          		            return initialScore;
		          		        } catch (NumberFormatException e) {
		          		            // Handle invalid input
		          		        }
		          		    }
		          		    return 0;
		          		   }
		          	
		          
		          	public void updateScore() {
		          		scorePanel.removeAll();
		          		EasyGBC d = new EasyGBC();
		          		JComponent scoreSlider = createFilterSlider("flashweave-score", "flashweave-score", currentNetwork, true, 100.0);
		          		scorePanel.add(scoreSlider, d.anchor("northwest").expandHoriz());
		          
		          		JPanel controlPanel = createControlPanel();
		          		controlPanel.setBorder(BorderFactory.createEmptyBorder(0,10,0,0));
		          		scorePanel.add(controlPanel, d.anchor("west").down().noExpand());
		          
		          	}
		          
		          	public void networkChanged(CyNetwork newNetwork) {
		          		this.currentNetwork = newNetwork;
		          		if (!filters.containsKey(currentNetwork)) {
		          			filters.put(currentNetwork, new HashMap<&gt());
		          			filters.get(currentNetwork).put("flashweave-score", new HashMap<&gt());
		          		}
		          		if (!colors.containsKey(currentNetwork)) {
		          			colors.put(currentNetwork, new HashMap<&gt());
		          		}
		          
		          		
		          		updateScore();
		          	}
		          
		          	public void selectedEdges(Collection<CyEdge&gt edges) {
		          	}
		          
		          }
		          		      				    		

   

ShowResultsPanelTask

 
                	public class ShowResultsPanelTask extends AbstractTask {
                	final MGGManager manager;
                	final ShowResultsPanelTaskFactory factory;
                	final boolean show;
                
                	public ShowResultsPanelTask(final MGGManager manager, 
                	                            final ShowResultsPanelTaskFactory factory, boolean show) {
                		this.manager = manager;
                		this.factory = factory;
                		this.show = show;
                	}
                
                	public void run(TaskMonitor monitor) {
                		monitor.setTitle("Show/hide results panel");
                
                		CySwingApplication swingApplication = manager.getService(CySwingApplication.class);
                		CytoPanel cytoPanel = swingApplication.getCytoPanel(CytoPanelName.EAST);
                
                		// If the panel is not already registered, create it
                		if (cytoPanel.indexOfComponent("be.kuleuven.mgG.internal.MGG") < 0) {
                			CytoPanelComponent2 panel = new MGGCytoPanel(manager);
                
                			// Register it
                			manager.registerService(panel, CytoPanelComponent.class, new Properties());
                
                			if (cytoPanel.getState() == CytoPanelState.HIDE)
                				cytoPanel.setState(CytoPanelState.DOCK);
                
                		} else {
                			int compIndex = cytoPanel.indexOfComponent("be.kuleuven.mgG.internal.MGG");
                			Component panel = cytoPanel.getComponentAt(compIndex);
                			if (panel instanceof CytoPanelComponent2) {
                				// Unregister it
                				manager.unregisterService(panel, CytoPanelComponent.class);
                				manager.setCytoPanel(null);
                			}
                		}
                
                		// factory.reregister();
                	}
                
                	public static boolean isPanelRegistered(MGGManager manager) {
                		CySwingApplication swingApplication = manager.getService(CySwingApplication.class);
                		CytoPanel cytoPanel = swingApplication.getCytoPanel(CytoPanelName.EAST);
                
                		if (cytoPanel.indexOfComponent("be.kuleuven.mgG.internal.MGG") >= 0) 
                			return true;
                
                		return false;
                	}
                }

          	

     


back