private void init(File[] partitions)
	{
		/*
		 * Initialise and set menu bar for this frame
		 */
		menuBar = new MenuBar();
		setJMenuBar(menuBar);

		menuBar.addComponentListener(new ComponentListener() {		
			
			public void componentShown(ComponentEvent e) {}			
			public void componentResized(ComponentEvent e) {}			
			public void componentMoved(ComponentEvent e) {}			
			public void componentHidden(ComponentEvent e) {					
				if(scanning!=true && canceled==false){					
					((InformationBar) infoPanel).update();
					((InformationBar) infoPanel).actionPerformed();
				}				
			}
		});
		
		/*
		 * Initialize the graphPanel and center it in the frame
		 */
		graphPanel = new DefaultGraphPanel(partitions, currentNode);
		add(graphPanel, BorderLayout.CENTER);
		((DefaultGraphPanel) graphPanel).update(currentNode);
		
		/*
		 * The northern-most components are kept in an innder panel with no layout. This allowed for precise component positioning for
		 * the panel
		 */
		JPanel northPanel = new JPanel();
		northPanel.setPreferredSize(new Dimension(640, 100));
		northPanel.setLayout(null);
		
		backButton = new JButton(new ImageIcon("back.gif"));		
		backButton.setBounds(0, 0, 95, 95);
		backButton.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent arg0) {
				((DefaultGraphPanel) graphPanel).back();
			}
		});		
		
		infoPanel = new InformationBar();
		infoPanel.setBounds(100, 0, 680, 100);
		
		/*
		 * Add components to North panel
		 */
		northPanel.add(infoPanel);
		northPanel.add(backButton);
		
		add(northPanel, BorderLayout.NORTH);
		
		/*
		 * Initialise the partition button panel and sets up appropriate listeners for it
		 */
		partitionPanel = new PartitionSelectionPanel(partitions);
		partitionPanel.addComponentListener(new ComponentListener() {		
			
			public void componentShown(ComponentEvent e) {}			
			public void componentResized(ComponentEvent e) {}			
			public void componentMoved(ComponentEvent e) {}			
			public void componentHidden(ComponentEvent e) {				
				if(scanning!=true){					
					((InformationBar) infoPanel).update();
				}
			}
		});
		
		add(partitionPanel, BorderLayout.WEST);		
		
		scanning = false;
	}